2

可能重复:
在 PHP 中由 ZipStream 动态创建的 zip 文件不会在 OSX 中打开

我正在使用 PHP ZipArchive 允许网站用户将几个文件组合成一个 zip 文件,然后下载它们。它在我运行它的 Fedora linux 计算机上完美运行。但是,如果我使用我的 Mac 笔记本电脑下载文件,文件将不会解压缩,双击会创建一个 cpgz 文件。双击 cpgz 文件会创建另一个 cpgz 等。

通过谷歌搜索,zip-cpgz 循环看起来是一个很常见的问题,但几乎所有的解决方案都表明原始文件的格式很差;一个不存在的初始文件的 zip,由 Windows 机器生成的具有不同文件结尾的 zip,诸如此类。我认为我的情况并非如此,因为它在我的 Linux 机器上运行良好。

使用 unzip 在终端中打开 zip 文件可以工作,但会发出警告

警告 [filename.zip]:在 zipfile 的开头或内部有 3 个额外字节(无论如何都在尝试处理)

不过,如果可以避免的话,我宁愿不告诉用户使用终端。

这是其中一个文件的链接,我无法提供我正在运营的网站的链接,它还没有启动和运行。该文件应包含 8 个 ascii 文件(它们是火星表面某个地点的表面温度)。

http://eddybarratt.co.uk/wp-content/uploads/2012/06/files_run0000008.zip

4

2 回答 2

1

使用 PHP 的 ZipArchive 类可以提供更好的结果的替代方法是PCL Zip 库。当 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 文件会变得混乱的问题,但希望它提供了另一种让事情为您工作的方法。

于 2012-06-04T21:29:19.783 回答
0

你用什么浏览器试过?在通过某个浏览器(在本例中为 Chrome)下载压缩文件时,我曾遇到过无法正确解压缩的经验。我尝试在 Safari 中下载该文件,它工作得很好。不过,我不确定为什么会这样,但请尝试使用其他浏览器,看看它是否有效。

于 2012-06-04T23:14:45.990 回答