可能重复:
Dynamically created zip files by ZipStream in PHP won't open in OSX
我正在使用PHP ZipArchive来允许网站用户将一些文件合并到一个zip文件中,然后下载它们。它在我运行它的Fedora linux计算机上运行得很好。但是,如果我使用Mac笔记本电脑下载文件,文件将无法解压缩,双击会创建一个cpgz文件。双击cpgz文件会创建另一个cpgz等等。
通过谷歌搜索,zip-cpgz循环看起来像是一个非常常见的问题,但几乎所有的解决方案都表明原始文件的格式很差;一个不存在的初始文件的zip,一个由不同文件结尾的Windows机器生成的zip,就是这样的。我不认为我的情况就是这样,因为它在我的Linux机器上运行良好。
使用解压缩工具在终端中打开zip文件,但会发出警告
warning [filename.zip]:在zipfile开头或内部有3个额外字节(无论如何都要尝试处理)
如果可以避免,我宁愿不告诉用户使用终端。
这是一个链接到其中一个文件,我无法提供指向我正在运行的网站的链接,它还没有运行起来。该文件应包含8个ascii文件(它们是火星表面上某个站点的表面温度)。
http://eddybarratt.co.uk/wp-content/uploads/2012/06/files_run0000008.zip
答案 0 :(得分:0)
使用PHP的ZipArchive类的替代方法是PCL Zip library,它可以提供更好的结果。当PHP的ZipArchive在用户的主机帐户上不可用时,我们在定制的CMS中使用它作为后备。以下是我们如何使用它的示例:
if ( class_exists('ZipArchive') ) {
... zip up the files with the PHP ZipArchive class...
} else {
require_once('pclzip.lib.php');
$pclZip = new PclZip($destination);
$pclZip->create($files, PCLZIP_OPT_REMOVE_ALL_PATH);
return file_exists($destination);
}
我意识到这并没有回答为什么ZipArchive创建的zip文件搞砸了的问题,但希望它提供另一种让你能够正常工作的方法。
答案 1 :(得分:0)
您尝试过哪些浏览器?我曾经历过以前的经验,当通过某个浏览器(在这种情况下为Chrome)下载时,压缩文件无法正确解压缩。我尝试在Safari中下载文件,它运行得很好。我不知道为什么会这样,但尝试使用不同的浏览器,看看它是否有效。