即使打开输出缓冲,似乎也无法强制下载图像


Can't seem to force image download even with output buffering on

好的,这是我的代码:

$file='dir/xxx/'.$images[0].'.jpg';
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'.jpg"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);

当我检查我的标题时,它们似乎是Content-Type:text/html的,而不是我想要的类型。它只是将图像原始数据输出到屏幕。请帮忙!

后期编辑:我已经删除了所有 ob_* 控制功能,结果是一样的

ob_clean销毁输出缓冲区,清除标头。

此外,您不需要该ob_*功能,可以安全地将其删除

似乎没有理由首先缓冲您的标头,因此您可能会删除它们。

如果你不想,这就是问题所在。在冲洗缓冲区之前对其进行清洁。尝试删除ob_clean() 。此外,您可能必须使用 ob_flush() 而不是 flush() .