我有一个小脚本设置标题以强制下载zip文件:
if(ini_get('zlib.output_compression')) {
ini_set('zlib.output_compression', 'Off');
}
header("Pragma: public");
header('Expires: '.gmdate('D, d M Y H:i:s').' GMT');
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Description: File Transfer");
header("Content-type: application/octet-stream");
header('Content-Disposition: attachment; filename="'.$mp3.'"');
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".@filesize($file));
@readfile($file) OR die("<html>...</html>");
exit;
在Chrome和Firefox中一切正常但在IE 9中失败。我在google搜索后尝试了许多不同的方法来设置这些标题,但没有任何帮助。然后我尝试了一个不同的小zip文件,它工作了!然后我尝试了一个更大的zip文件并再次失败。这会是服务器或php.ini上的一些设置吗?为什么它只影响IE?
当它在IE中失败时,它看起来像下载..说完了。但该文件是0字节。
感谢您的帮助!
答案 0 :(得分:2)
如果文件足够大,您可能会遇到与内存,执行时间等相关的问题。
您可以使用x-sendfile标头:
,而不是尝试读取文件header('x-sendfile: '.$file);