我从我的数据库中获取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();
感谢
答案 0 :(得分:1)
你在问题中提出的问题受到许多参数的影响,我担心你的问题会发生 - 如果有的话 - 只抓一些参数。
突然出现的是PNG标题:
‰PNG IHDR\r¨fÆÉIDAT
看起来并不破碎。因此,您可能确实存在将图像存储到数据库中的问题。也许数据被截断/修改了,这种变化没被注意到了?
解决这个问题的一种方法是在将文件放入blob之前创建文件的校验和,以便稍后验证数据的完整性。
答案 1 :(得分:1)
您需要在图像数据之前输出标题,而不是之后:
header("Content-Type: image/png");
echo $row['image'];