我的图像存储在 MySQL 数据库中,longblob 类型列,但是当我尝试在 Chorme 的浏览器上显示它们时,我只看到一个小白框,而在 Firefox 上我看到错误消息说图像文件有一个问题。
这是我用来显示图像的。
$query = "SELECT file, type FROM uploads WHERE ref = '$ref'";
$statement = $pdo->prepare($query);
$statement->execute();
$row = $statement->fetch(PDO::FETCH_ASSOC);
header("Content-Type: " . $row["type"]);
echo $row["file"];
注意:$row["type"]
是文件的 MIME 类型。
我认为图像没有损坏,因为我可以用它来显示它。
echo '<img src="data:image/jpeg;base64,'.base64_encode( $row['file'] ).'"/>';
但我需要它的另一种方式,奇怪的是几天前它使用相同的代码运行良好。可能是 MySQL 的问题?
编辑 上传代码。
function uploader_upload($file, $ref) {
$uploader = $_LOGIN["userid"];
$name = $file["name"];
$type = $file["type"];
$tmp_name = $file["tmp_name"];
$note = $file["note"];
$insert_file = mysql_escape_string(file_get_contents($tmp_name));
$query = "INSERT INTO uploads (file, name, type, uploader, ref, note) VALUES ('$insert_file', '$name', '$type', '$uploader', '$ref', '$note')";
$statement = $pdo->prepare($query);
$statement->execute();
$refs[] = $ref;
return $refs;
}
最佳答案
好的,我找到了问题所在,似乎 echo
随该 php 的包含一起滑动,它正在破坏图像。
如果有人遇到同样的问题,请确保没有echo
或print
或任何错误显示。
关于php - SQL 图像不显示 header 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43067662/