Codeigniter下载助手损坏.7z和.rar文件帮助或替代解决方案


Codeigniter Download Helper corrupts .7z and .rar files help or alternative solutions?

我正在使用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文件,下载时文件没有损坏……我越来越不明白问题出在哪里了。

更新:

找到了答案,它是一个值,它位于文件的顶部,形成了一些连接的方法,我在那里回声了一个值,以便在一段时间前检查它。

更多信息请点击这里:是什么导致下载的文件损坏?

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