dongyata3336
dongyata3336
2013-12-02 08:52

从mysql php获取图像

已采纳

here i am trying to upload the employee profile picture to mysql and then i want to fetch those picture. now i can uploaded the image into mysql db successfully but, when i try to fetch the image that doesn't fetch properly. if you open an image in texteditor na how it will look like? the same thing i got it now.. like this... (QÕf0±Ó%"÷YúEûVÚo¾e9°R}È"!5®?•Ÿ\¯ž›ÃÕîYU0T³¼´œ\aVë%z€ÙBðŒÆnPÈ Qx•eú0´ÁPÁ”·=ó-)Oyá+×½ÄS„ÞšÅS!Y¨;,¾¤ª5HÅÓôÍó3Áº¶j/"5±•RX›ee.&{ +C˜ H CÌai,F+Ô#”?Ì8««IÐO%IW).

my question is how to fetch the image properly? and then is there any other way to do store an image to mysql db. for example save a employee profile pictures to one folder and then store that link to mysql???

index.php code:

<form enctype="multipart/form-data" action="img.php" method="post" name="changer">
<input name="image" accept="image/jpeg" type="file">
<input value="Submit" type="submit">
</form>
<?php
include("config.php");
$query = mysql_query("SELECT * FROM tbl_images");
while($row = mysql_fetch_array($query))
{
    echo "" . $row['image'] . "";
}
?>

img.php code:

<?
include("config.php");
if (isset($_FILES['image']) && $_FILES['image']['size'] > 0) { 

  $tmpName  = $_FILES['image']['tmp_name'];  

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

  $query = "INSERT INTO tbl_images ";
  $query .= "(image) VALUES ('$data')";
  $results = mysql_query($query, $link) or die(mysql_error());

  print "Thank you, your file has been uploaded.";

  }
  else {
  print "No image selected/uploaded";
  }
?>
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

5条回答

  • dongquexi1990 dongquexi1990 8年前

    Can you try this,

     echo '<img src="data:image/png;base64,' . base64_encode($row['image']) . '" />';
    

    Your code:

    while($row = mysql_fetch_array($query))
    {
       echo '<img src="data:image/png;base64,' . base64_encode($row['image']) . '" />';
    }
    
    点赞 评论 复制链接分享
  • dongmo9996 dongmo9996 8年前

    you must store you image in a folder and rename the file unique name along with the extension.

    and store filename in mysql database table. i think the given code will help you.

        <?
    include("config.php");
    if (isset($_FILES['image']) && $_FILES['image']['size'] > 0) { 
    
      $tmpName  = $_FILES['image']['tmp_name'];  
    
     $filename = $_FILES['image']['name'];
     $ext = getExtension($filename);
     $new_file = "uniquename_of_file.".$ext; // you can generate unique name by any way you want.
    
    move_uploaded_file($_FILES['image']['tmp_name'],$DESTINATION_FOLDER."/".$new_file; // upload file to the destination folder with new name
    
      $query = "INSERT INTO tbl_images ";
      $query .= "(image) VALUES ('$new_file')";
      $results = mysql_query($query, $link) or die(mysql_error()); // insert new name into the database
    
      print "Thank you, your file has been uploaded.";
    
      }
      else {
      print "No image selected/uploaded";
      }
    ?>
    

    function of getting extension will be as follows

         function getExtension($str) {
             $i = strrpos($str,".");
             if (!$i) { return ""; }
             $l = strlen($str) - $i;
             $ext = substr($str,$i+1,$l);
             return $ext;
     }
    
    点赞 评论 复制链接分享
  • dongtanjian9310 dongtanjian9310 8年前

    please check the column size where you are saving the file content. The probable reason to me that you are not able to retrieve the images could be that the data is being trimmed due to size limit of the column. Try increasing the size of the column and changing the data type also, if needed. You may try the longblob datatype.

    点赞 评论 复制链接分享
  • dtzk85937 dtzk85937 8年前

    You need to have it rendered in the HTML as an img tag.

    You should consider storing the image in a directory on the server and storing the image name/location in the database. Then create an img tag from that.

    点赞 评论 复制链接分享
  • doudou6719 doudou6719 8年前

    Encapsulate the echo statement in <img> tags

    <form enctype="multipart/form-data" action="img.php" method="post" name="changer">
    <input name="image" accept="image/jpeg" type="file">
    <input value="Submit" type="submit">
    </form>
    <?php
    include("config.php");
    $query = mysql_query("SELECT * FROM tbl_images");
    while($row = mysql_fetch_array($query))
    {
        echo "<img src=". $row['image'] . "/>"; // Do like this
    }
    ?>
    
    点赞 评论 复制链接分享

相关推荐