2012-05-02 211 views
0

确定强制图像下载,即使输出缓冲,这里是我的代码:似乎无法在

$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_ *控制功能,其结果是一样的

+0

我不认为你想缓冲这样的标题... – prodigitalson

+0

@prodigitalson请带一个有效的建议。 – Gabriel

+0

你确定头文件没有被发送到应用程序的其他地方吗? – prodigitalson

回答

0

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

而且你不需要那么ob_*功能,您可以安全地删除

+0

结果是一样的。我已经编辑我的职务 – Gabriel

+0

删除所有ob_ *功能 – dynamic

+0

做到这一点,同样的结果 – Gabriel

0

似乎有不成为一个理由来缓冲你的头摆在首位,那么你很可能将其删除。

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

+0

结果是一样的,我编辑了我的文章 – Gabriel

+0

你试过完全删除缓冲吗? – Honoki

+0

是的,同样的事情:) – Gabriel