Codeigniter下载Helper腐败.7z和.rar文件帮助或替代解决方案?

时间:2013-05-08 12:38:13

标签: php codeigniter helper

我正在使用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()和标题(“Content-Length:”。。strlen($ data));可能不是这样,因为无论大小.zip将始终正确下载。

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

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

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

更新:

找到答案它是一个值在文件顶部的一些连接方法,我已经回显了一个值,以便在前一段时间检查它。

更多信息: What causes downloaded files to become corrupt?

1 个答案:

答案 0 :(得分:0)

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