从mysql数据库显示图像 - php

时间:2015-03-24 00:09:49

标签: php

我目前在从mysql数据库显示图像时遇到问题。我能够将图像上传到mysql数据库,但是如果我想从数据库中检索它,它会以Gibberish文本显示。

这是upload.php

  if (isset($_FILES['image']) && $_FILES['image']['size'] > 0) {

  $filename = mysqli_real_escape_string($mysqli,$_FILES['image']['name']);
  $tmpName = $_FILES['image']['tmp_name'];
  $fp = fopen($tmpName, 'r');
  $data = fread($fp, filesize($tmpName));
  $data = addslashes($data);
  fclose($fp);

  $query = "INSERT INTO `TABLES` (`image`)
           VALUES( NULL,'$data')";
  $result = $mysqli->query($query);
}

View.php

 $mysqlquery = "SELECT * FROM TABLE";
 $results = $mysqli->query($mysqlquery);

 if($results->num_rows > 0){
 while ($row = $results ->fetch_assoc()){
 echo '<div align = "center">';
 echo "<b>".$row["image"]. "<br></b>";
 header("Content-type: image/jpeg");
    }
}

2 个答案:

答案 0 :(得分:0)

尝试这一点,不要忘记在源

之前提供图像路径
echo "<img src='your image location directory/". $row['image'] .'" >";

答案 1 :(得分:0)

Oooooh ......我只是 希望 我得到了这个答案......

但是,有些想法。

首先,根据个人经验,我敦促不要在数据库中存储图像。首先,您的数据库备份很快就会变得荒谬。一种更常见,更好的方法是将图像存储在文件系统中,并仅存储数据库中图像的位置(例如/img/pic03.jpg)

接下来,我看到你正在修改收到的二进制数据:

$tmpName = $_FILES['image']['tmp_name'];
$fp = fopen($tmpName, 'r');
$data = fread($fp, filesize($tmpName));
$data = addslashes($data);
fclose($fp);

也许你知道一些我不知道的事情(这并不困难),但一般来说,如果你用二进制图像数据进行gerfingerpoke,你会得到......嗯...... gibberish 尝试禁用这些行,看看会发生什么。