即使输出缓冲也无法强制图像下载

时间:2012-05-02 11:34:48

标签: php image http-headers

好的,这是我的代码:

$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_ *控制函数,结果相同

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

似乎没有理由首先缓冲标题,因此您可以删除它们。

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