1,105,312 Community Members

how to retrive my blob image from database

Member Avatar
sultankhan
Junior Poster in Training
50 posts since Nov 2012
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

hi every one i have create a table with name upload
id int notnull
name varchar notnull
type varchar notnull
size varchar notnull
content varchar not null

and my code is the follwing but instead of iamge it show garbage value

<form method="post" enctype="multipart/form-data" action="image.php">
<table width="350" border="0" cellpadding="1" cellspacing="1" class="box">

<td>Name:</td><td><input name="username" type="text" size"20"></input></td>
<tr>
<td width="246">

<input type="hidden" name="MAX_FILE_SIZE" value="2000000">
<input name="userfile" type="file" id="userfile">
</td>
<td width="80"><input name="upload" type="submit" class="box" id="upload" value=" Upload "></td>

</tr>
</table>
</form>





<?php
$name = $_POST['username']; 
if($_POST['upload']){
if($name!=''){
$servername="localhost";
    $username="root";
    $conn=  mysql_connect($servername,$username)or die(mysql_error());
    mysql_select_db("test",$conn);
    $sql = "Insert into upload(username) values('$name')";
$result=mysql_query($sql,$conn) or die(mysql_error());?>
<div class="message">you have sucessfully upload picture<br/></div>
<?php }
else $error="Name is missing please fill it";
}
?>  
<?php if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0)
{
$fileName = $_FILES['userfile']['name'];
$tmpName  = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];
$name = $_POST['username']; 

$fp      = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);

if(!get_magic_quotes_gpc())
{
    $fileName = addslashes($fileName);
}

include 'config.php';
//include 'library/opendb.php';

$query = "INSERT INTO upload (name,size, type, content ) ".
"VALUES ('$fileName','$fileSize', '$fileType', '$content')";

mysql_query($query) or die('Error, query failed');
//include 'library/closedb.php';

echo "<br>File $fileName uploaded<br>";
}
?>


<?php
$con=mysql_connect("localhost", "root", "");
mysql_select_db("test",$con);


    $dn = mysql_query('select content from upload where id="'.$id.'" ');
    if(mysql_num_rows($dn)>0)
    {
        $dnn = mysql_fetch_array($dn);
        //We display the user datas
?>
 <?php while($dnn = mysql_fetch_array($dn))
 {?>

<table style="width:500px;">
    <tr>
        <td><?php

?></td>


        <div class='center'><img src="<?php echo $dnn['content']; ?>" /></td></div>
    </tr>

<?php
}
//We add a link to send a pm to the user
if(isset($_SESSION['username']))
{
?>

<?php
}
    }
    else
    {
        echo 'This user dont exists.';
    }



?> 







</body>
</html>
LastMitch
Deleted Member
 
3
 

@sultankhan

and my code is the follwing but instead of iamge it show garbage value

What do you mean garbage value?

Member Avatar
diafol
Where are my eyes?
12,941 posts since Oct 2006
Reputation Points: 1,821 [?]
Q&As Helped to Solve: 1,845 [?]
Skill Endorsements: 90 [?]
Moderator
Featured
Sponsor
 
0
 
<img src="<?php echo $dnn['content']; ?>" />

You can't display the content like this. Your page seems to be doing quite a lot of work. It may be better to have it chunked into smaller files.

You could do this:

header("Content-type: image/gif"); // but get the right type 
echo $dnn['image']; 

Or:

<img src="data:image/gif;base64,<?php echo base64_encode($dnn['contents']);?>" />

The disadvantage of the above AFAIK is that it can't be cached.

If I were to do this, I'd probably have an image.php file with the code above in it (and some filename parsing to get the mime type), so something like this:

<img src="image.php?id=<?php echo $dnn['id'];?>" />

The image.php file then does something like:

//check get id exists then:
$id = $_GET['id'];
//clean for DB if using mysql
//then get the content from the DB via query
//state the mime type
//echo the contents
Member Avatar
sultankhan
Junior Poster in Training
50 posts since Nov 2012
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

sorry one thing i have save content as mediumblob in which i am going to save my image

Member Avatar
sultankhan
Junior Poster in Training
50 posts since Nov 2012
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

dear its give the following error
the image http://localhost/php/image.php cannot be displayed because it contain errors

Member Avatar
pritaeas
mod_pritaeas
11,285 posts since Jul 2006
Reputation Points: 1,420 [?]
Q&As Helped to Solve: 1,831 [?]
Skill Endorsements: 154 [?]
Moderator
Featured
Sponsor
 
0
 

Storing an image in a varchar column is probably causing the issue, use a binary column type.

Member Avatar
sultankhan
Junior Poster in Training
50 posts since Nov 2012
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

sir i am sorry i storing it image in content fieald and i have save it meduimblob mean as binary type but still it give the the above error
mean this one
the image http://localhost/php/image.php cannot be displayed because it contain errors

Member Avatar
pritaeas
mod_pritaeas
11,285 posts since Jul 2006
Reputation Points: 1,420 [?]
Q&As Helped to Solve: 1,831 [?]
Skill Endorsements: 154 [?]
Moderator
Featured
Sponsor
 
0
 

Have you tried diafol's suggestion (using a separate image script)?

Member Avatar
sultankhan
Junior Poster in Training
50 posts since Nov 2012
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

yes i have html page and save it with the name upload.php which have the follwoing code and my image.php have the above code as i have post

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" type="text/css" media="all" href="css/style.css" />
<title>Upload pictuer</title>
</head>

<body>
<form method="post" enctype="multipart/form-data" action="image.php">
<table width="350" border="0" cellpadding="1" cellspacing="1" class="box">

<td>Name:</td><td><input name="username" type="text" size"20"></input></td>
<tr>
<td width="246">

<input type="hidden" name="MAX_FILE_SIZE" value="2000000">
<input name="userfile" type="file" id="userfile">
</td>
<td width="80"><input name="upload" type="submit" class="box" id="upload" value=" Upload "></td>

</tr>
</table>
</form>

</body>
</html>
Member Avatar
sultankhan
Junior Poster in Training
50 posts since Nov 2012
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

please anay one can solve this problem for me please

    id      name                 type       size        content
    0       registor-img.jpg    image/jpeg  7417    [BLOB - 7.2KiB]
    0       registor-img.jpg    image/jpeg  7417    [BLOB - 7.2KiB]
    0       registor-img.jpg    image/jpeg  7417    [BLOB - 7.2KiB]
    0       registor-img.jpg    image/jpeg  7417    [BLOB - 7.2KiB]

this my table look like above...........

Member Avatar
pritaeas
mod_pritaeas
11,285 posts since Jul 2006
Reputation Points: 1,420 [?]
Q&As Helped to Solve: 1,831 [?]
Skill Endorsements: 154 [?]
Moderator
Featured
Sponsor
 
0
 

I was talking about the separate script for showing your image. Show the code you have for that one (what diafol said, not with all the markup you posted in your question).

Member Avatar
sultankhan
Junior Poster in Training
50 posts since Nov 2012
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

please anay one can solve this problem for me please

    id      name                 type       size        content
    0       registor-img.jpg    image/jpeg  7417    [BLOB - 7.2KiB]
    0       registor-img.jpg    image/jpeg  7417    [BLOB - 7.2KiB]
    0       registor-img.jpg    image/jpeg  7417    [BLOB - 7.2KiB]
    0       registor-img.jpg    image/jpeg  7417    [BLOB - 7.2KiB]

this my table look like above...........

Member Avatar
sultankhan
Junior Poster in Training
50 posts since Nov 2012
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

dear sir this what i have in my image.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<?php
$name = $_POST['username']; 
if($_POST['upload']){
if($name!=''){
$servername="localhost";
    $username="root";
    $conn=  mysql_connect($servername,$username)or die(mysql_error());
    mysql_select_db("test",$conn);
    $sql = "Insert into upload(username) values('$name')";
$result=mysql_query($sql,$conn) or die(mysql_error());?>
<div class="message">you have sucessfully upload picture<br/></div>
<?php }
else $error="Name is missing please fill it";
}
?>  
<?php if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0)
{
$fileName = $_FILES['userfile']['name'];
$tmpName  = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];
$name = $_POST['username']; 

$fp      = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);

if(!get_magic_quotes_gpc())
{
    $fileName = addslashes($fileName);
}

include 'config.php';
//include 'library/opendb.php';

$query = "INSERT INTO upload (name,size, type, content ) ".
"VALUES ('$fileName','$fileSize', '$fileType', '$content')";

mysql_query($query) or die('Error, query failed');
//include 'library/closedb.php';

echo "<br>File $fileName uploaded<br>";
}
?>


<?php
$con=mysql_connect("localhost", "root", "");
mysql_select_db("test",$con);


    $dn = mysql_query('select content from upload where id="'.$id.'" ');
    if(mysql_num_rows($dn)>0)
    {
        $dnn = mysql_fetch_array($dn);
        //We display the user datas
?>
 <?php while($dnn = mysql_fetch_array($dn))
 {?>

<table style="width:500px;">
    <tr>
        <td><?php

?></td>
    <?Php header("Content-type: image/jpeg"); // but get the right type
    echo $dnn['content']; ?>
        <div class='center'><img src="localhost/php/upload/<?php echo $dnn['content']; ?>" /></td></div>
    </tr>

<?php
}
//We add a link to send a pm to the user
if(isset($_SESSION['username']))
{
?>

<?php
}
    }
    else
    {
        echo 'This user dont exists.';
    }



?> 







</body>
</html>
Member Avatar
sultankhan
Junior Poster in Training
50 posts since Nov 2012
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
-1
 

@pritaeas please solve this for me...........
thank you very much

Member Avatar
diafol
Where are my eyes?
12,941 posts since Oct 2006
Reputation Points: 1,821 [?]
Q&As Helped to Solve: 1,845 [?]
Skill Endorsements: 90 [?]
Moderator
Featured
Sponsor
 
2
 

Don't use a DOCTYPE for an image generator. The mime type is there so that an image is displayed - there should be no other output before of after. So the way you've gone about this is wrong. As you're using mysql_*, I'll do so too, but moving to mysqli_* or PDO functions would be better.

Your image.php file:

$getDefault = true;
//assume mysql details included here somewhere
if(isset($_GET)){
    $id = intval($_GET);
    $r = mysql_query("SELECT type, content FROM upload WHERE id = $id");
    if(mysql_num_rows($r)){
        $dnn = mysql_fetch_assoc($r);
        $getDefault = false;
    }
}
if($getDefault){
   $r = mysql_query("SELECT type, content FROM upload WHERE id = 1"); //this is the default image
   $dnn = mysql_fetch_assoc($r);
}

$mimeType = $dnn['type'];
$content = $dnn['content'];

header("Content-type: $mimeType");
echo $content;

That's it. Maybe some more error handling for production code. But along those lines.

You just call it from links - which can be static:

<img src="image.php?id=74" />

Or dynamic:

<img src="image.php?id=<?php echo $someIDVar;?>" />

Or:

echo "<img src='image.php?id=$someIDVar' />";

As I said in my previous post - your files are trying to do too much. You can certainly include files, and these help to compartmentalize functions.

@pritaeas please solve this for me...........

Oops. Sorry p, this was for your eyes only, by the sounds of it. :)

Member Avatar
sultankhan
Junior Poster in Training
50 posts since Nov 2012
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

dear diafol i have done my task with the following code
`

<?php 
if(isset($_SESSION['username']))
{
$id = intval($_GET['ano']);
$con=mysql_connect('localhost','root','');
if(!$con)
{ 
  echo mysql_error();
}
$db=mysql_select_db('test',$con);
if(!$db)
{ 
  echo mysql_error();
}


$sql='SELECT *FROM image';

$r=mysql_query("$sql",$con);
if($r)
  { 
    while($row=mysql_fetch_array($r))

      { ?> 

         <div class='left1'>Posted by <?php echo $row['userid']; ?><div class='authorcolor'><?php echo $row['username']; ?></a></div></div>

       <?php   echo $row['aname'];
         echo "<br>";
         echo $row['adetails'];
         echo "<br>";

         //header("content-type:aphototype");
         echo "<img src=image.php?ano=".$row['ano']." width=600 height=200/>";
         echo "<br>";
         echo $row['date'];
         echo "<br>";
      }
  }
  else
  {
  echo mysql_error();
  }
  }
else
{
    echo '<div class="message">You must be logged to access this page.</div>';
}
?>Inline Code Example Here

`

Member Avatar
sultankhan
Junior Poster in Training
50 posts since Nov 2012
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

and it done my geol but now anthor problem which i am facing is that how to retrive the username which upload picture my image table is

ano id  id2  aname  adetails            aphoto          aphototype  user1   date
 7  0   0   sultan  this good girl  [BLOB - 19.2KiB]    image/jpeg  2     2012-11-27 

ano is image id and user1 is the user whic have upload the picture
now i want that when a user upload a picture then it name come with picture ihave try this one but it dont show name when i change $row[userid] to $row[user1] it give me the id of the user while i want username

 while($row=mysql_fetch_array($r))

      { ?> 

         <div class='left1'>Posted by <?php echo $row['userid']; ?><div class='authorcolor'><?php echo $row['username']; ?></a></div></div>

       <?php   echo $row['aname'];
         echo "<br>";
         echo $row['adetails'];
         echo "<br>";

         //header("content-type:aphototype");
         echo "<img src=image.php?ano=".$row['ano']." width=600 height=200/>";
         echo "<br>";
         echo $row['date'];
         echo "<br>";
      }
Member Avatar
diafol
Where are my eyes?
12,941 posts since Oct 2006
Reputation Points: 1,821 [?]
Q&As Helped to Solve: 1,845 [?]
Skill Endorsements: 90 [?]
Moderator
Featured
Sponsor
 
0
 

You need to use a JOIN:

e.g.

SELECT i.*, u.username FROM image AS i INNER JOIN users AS u ON i.user1 = u.user_id

Now you get the 'username' into the $row array too. Note - I don't know what your users table is called nor the primary key for that table - so you may need to change 'users' and 'user_id'

Member Avatar
sultankhan
Junior Poster in Training
50 posts since Nov 2012
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

thanks diafol i have solved it by this method
just add user name in table add link to it and its work

SELECT *FROM image
$r=mysql_query("$sql",$con);
if($r)
  { 
    while($row=mysql_fetch_array($r))

      { ?> 

         <div class='left1'> Uploaded by <a href="profilee.php?id= <?php echo $row['userid']; ?>"><div class='authorcolor'>  <?php echo $row['username']; ?></a></div></div><div class='date1'> <?php echo $row['date'];?></div>

       <?php   echo $row['aname'];
         echo "<br>";
         echo $row['adetails'];
         echo "<br>";

         //header("content-type:aphototype");
         echo "<img src=image.php?ano=".$row['ano']." width=600 height=200/>";
         echo "<br>";
         echo "<br>";
         echo "<br>";
         echo "<br>";
      }
  }

you are so sweet and helpul thank you very much i have add a new question please read it

Question Answered as of 1 Year Ago by pritaeas, diafol and LastMitch
You
This question has already been solved: Start a new discussion instead
Post:
Start New Discussion
Tags Related to this Article