用于压缩文件的ZIP文件的PHP下载脚本

时间:2011-06-08 09:45:27

标签: php html http-headers

这是我的代码:

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.$filename.'.zip');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
@readfile($file);
exit;

$file等于我服务器上的文件位置(该位置在public_html目录之外)

下载文件后,我打开文件,发现zip存档已损坏。我可以看到zip中所有文件的列表,但我无法打开它们。当我通过FTP客户端下载文件时,存档未损坏。我在脚本之前或之后没有任何空格。什么可能导致此文件损坏?

修改

我发现了问题:zlib压缩破坏了文件,所以我将ini_set('zlib.output_compression', 'Off');添加到脚本的开头

1 个答案:

答案 0 :(得分:0)

此处的问题是您没有发送正确的内容范围,因此在向浏览器报告时文件大小不正确。

相关问题