【问题标题】:PHP download script for ZIP files corrupting the file用于损坏文件的 ZIP 文件的 PHP 下载脚本
【发布时间】:2011-09-10 17:41:31
【问题描述】:

这是我的代码:

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');

【问题讨论】:

  • 我发现了问题:zlib 压缩损坏了文件,所以我在脚本开头添加了ini_set('zlib.output_compression', 'Off');
  • 将您的评论变成答案并接受您自己的答案。
  • 直到 8 小时后才允许我回答自己的问题...

标签: php html http-headers


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    相关资源
    最近更新 更多