-3

我从我的数据库中获取一个 blob 图像,但它返回损坏。

如果我删除header("Content-Type: image/jpeg");

它返回文件扩展名应该是因为它是PNG文件

‰PNG  IHDR\r¨fÆÉIDAT

有什么想法有什么问题吗?是的。header("Content-Type: image/png");我也试过了

我试过 ob_start 和 ob_end_flush();

代码

  ob_start();

    $query = $db->query("SELECT `image` FROM `userdetails` WHERE id = '{$_SESSION['uid']}' ");
    $row = $query->fetch(PDO::FETCH_ASSOC);

    echo $row['image'];


    header("Content-Type: image/jpeg");
    ob_end_flush();

谢谢

4

2 回答 2

1

您在问题中所问的内容受制于许多参数,我担心您的问题会 - 如果有的话 - 只会涉及其中的一些参数。

映入眼帘的是 PNG 标头:

‰PNG  IHDR\r¨fÆÉIDAT

看起来没有破碎。因此,您可能确实在将图像存储到数据库中时遇到了问题。也许数据被截断/修改而这种变化没有被注意到?

解决这个问题的一种方法是在将文件放入 blob之前创建文件的校验和,以便以后能够验证数据完整性。

于 2013-04-15T23:00:13.087 回答
1

您需要在图像数据之前输出标题,而不是之后:

header("Content-Type: image/png");
echo $row['image'];
于 2013-04-15T23:02:08.280 回答