下载时图像 blob 不可读(php)

标签 image header download blob gmagick

我有一个程序,其图像存储为 MySQL 数据库中的 blob,除了我的下载链接外,它运行良好。它按应有的方式下载,并且大小也合适,但图像不显示。

上传时,这主要是图像的处理方式:

$image = $_FILES['image']['tmp_name'];

$data = file_get_contents($image);

然后我将 PDO 用于 MySQL 连接:
$q->bindParam(2, $data, PDO::PARAM_LOB);

这在使用 base64 时工作正常。
$image = new Gmagick();
$image->readimageblob($data);
<img src="data:image/'.$ext.';base64,'.base64_encode($image->getimageblob()).'" />';

但这是我的问题。
header('Content-Disposition: attachment; filename='.$regnr.'-'.$id.'.'.$ext;
header("Content-type: image/$ext");
header("Content-length: $size");
echo $data; 

我也试过 echo $image->getimageblob();等等......以及其他一些标题。但结果是一样的,图像下载,是正确的大小和格式,但我无法阅读。

我该如何解决这个问题?

最佳答案

我找到了答案。我想我用了大约 15 个小时。

虽然,如果有人想知道,解决方案是一条简单的线:

 ob_clean();

输出前。

关于下载时图像 blob 不可读(php),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13231891/

相关文章:

c# - 从循环中动态调用图像

c++ - 使用 C++ Api 的 Objective C 实现

HTTPSresource 的 Excel VBA URLDownloadToFile 错误

image - 类似于 Haskell 的 Pygame?

javascript - Canvas 向上移动图片花费太多时间

php - 在非常高的图像上用 PHP 绘制线条,然后脚本停止绘制。出了什么问题,我该如何解决?

C++ 通过跨多个 .cpp 文件所需的信息一次性读取一个头文件

c++ - 在 header 中声明对象

javascript - 确定下载开始

javascript - 在 angularjs 1.2(或 javascript)和 HTML 4x 中打开 Saveas 对话框