从mysql php获取图像

时间:2013-12-02 08:52:58

标签: php mysql image

这里我试图将员工个人资料图片上传到mysql然后我想要获取那些图片。现在我可以成功将图像上传到mysql db,但是,当我尝试获取无法正常获取的图像时。如果你在texteditor中打开一个图像,它会是什么样子?我现在得到了同样的东西..就像这样...(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〜HCÌai,F +Ô#”?Ì8«« IDO%IW)。

我的问题是如何正确获取图像?然后还有其他方法可以将图像存储到mysql db。例如,将员工个人资料图片保存到一个文件夹,然后将该链接存储到mysql ???

index.php代码:

<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代码:

<?
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 个答案:

答案 0 :(得分:5)

你能试试吗,

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

您的代码:

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

答案 1 :(得分:2)

请检查保存文件内容的列大小。我无法检索图像的可能原因可能是由于列的大小限制而正在修剪数据。如果需要,请尝试增加列的大小并更改数据类型。您可以尝试longblob数据类型。

答案 2 :(得分:1)

echo 标记中填充 <img> 语句

<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
}
?>

答案 3 :(得分:1)

您需要将其作为img标记呈现在HTML中。

您应该考虑将图像存储在服务器上的目录中,并将图像名称/位置存储在数据库中。然后从中创建一个img标记。

答案 4 :(得分:1)

您必须将图像存储在文件夹中,并将文件唯一名称与扩展名一起重命名。

并在mysql数据库表中存储文件名。我认为给定的代码会对你有所帮助。

    <?
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 getExtension($str) {
         $i = strrpos($str,".");
         if (!$i) { return ""; }
         $l = strlen($str) - $i;
         $ext = substr($str,$i+1,$l);
         return $ext;
 }