【问题标题】:Codeigniter Download Helper corrupts .7z and .rar files help or alternative solutions?Codeigniter 下载帮助程序损坏 .7z 和 .rar 文件 帮助或替代解决方案?
【发布时间】:2013-05-02 16:43:38
【问题描述】:

我正在使用 Codeigniter 的下载助手进行“轻松”下载。

    $this->load->helper('download');
    $file = //get_file_name_from_db
    $data = file_get_contents( upload_path . $file);
    force_download($file, $data);

我遇到的问题是任何 .zip 都可以正确下载,而 .7z 和 .rar 则不能。但是,当我检查上传的文件以查看它们是否已损坏时,它们是否正常(通过 FTP 或通过简单地检查文件夹在本地)。

如果文件真的很小(比如 5kb 左右),那么任何类型(7z 和 rar)都不会损坏。

这里的参考是我在 mime.php 中使用的 mime 类型(上传和下载助手都使用)

'zip'   =>  array('application/x-zip', 'application/zip', 'application/x-zip-compressed'),
'7z'    =>     array('application/x-7z-compressed','application/x-7z',      'application/7z', 'application/force-download', 'application/octet-stream'),
'rar'   =>  array('application/x-rar-compressed','application/x-rar', 'application/rar', 'application/octet-stream')

问题可能出在两点,要么是 mime 类型(可能不是因为如上所述,在非常小的文件大小上它可以工作)。或者 file_get_contents() 和 header("Content-Length: ".strlen($data));可能并非如此,因为无论大小如何,.zip 都将始终正确下载。

或者可能是服务器配置问题?我在主机和本地主机上都对其进行了测试,它们的行为相同。

那么有人知道问题出在哪里,或者他们可以建议我应该使用的替代下载脚本或方法吗?

更新: 我在主机上上传了一个大小为 1.8 MB 的 7z 文件,下载时文件没有损坏......我越来越难以理解问题所在。

更新:

找到了答案,它是文件顶部的一个值,我在某个连接的方法中回显了一个值,以便不久前检查它。

更多信息请点击这里: What causes downloaded files to become corrupt?

【问题讨论】:

    标签: php codeigniter helper


    【解决方案1】:

    我认为 PHP 中没有用于生成 7z 或 rar 文件(如 zip/gzip)的内置库。如果存在,您可能需要为此使用外部库。

    【讨论】:

      猜你喜欢
      • 2021-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-14
      • 2015-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多