php - SQL 图像不显示 header 内容

标签 php mysql

我的图像存储在 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 的包含一起滑动,它正在破坏图像。

如果有人遇到同样的问题,请确保没有echoprint 或任何错误显示。

关于php - SQL 图像不显示 header 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43067662/

相关文章:

php - 如何通过输入url检测是否启用了ssl?

php - 如何在 Laravel 5.3 中将请求数据传递到 Mailable

php - 按值增加字段

mysql - 如何在 SELECT 的结果中有条件地对某些行进行二元化?

mysql - 数据库规范化设计问题 : 2 tables sharing almost the same information

php - 如何处理有错误的 Beanstalkd 作业

php - 语法错误 PHP 5.3.3 - 意外的 '['

php - 访问 PHP 函数中的全局变量

python - 加载 MySQLdb 模块时出错 : No module named 'MySQLdb'

php - 如何使用 bash 脚本在 MySQL 中赋值