我目前在从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");
}
}
答案 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 。 尝试禁用这些行,看看会发生什么。