PHP的zipArchive类的大小限制?

时间:2010-08-12 22:53:29

标签: php zip ziparchive

我正在用PHP创建一个zip文件供用户下载。我从PHP或检查zipArchive类的GetStatusString函数没有错误。但是,如果我将一些文件放入存档,那么当我尝试打开它时,我会收到错误“压缩(压缩)文件夹无效或已损坏”。我已经检查了我添加的所有文件,它们都很好。我唯一能想到的是较大的文件会导致问题。但“大”文件只有大约半兆字节,我找不到任何有关zipArchive文件大小限制的文档。有关其他事情的想法,所以我可以追查这个问题?感谢。

修改 我把它缩小到一个导致问题的特定文件。有些人工作的规模大或者更大,所以我想抛弃那个想法。以下是工作正常的文件名示例:

627 Jane.CCD.pdf
712 Example_DrNotes.pdf
625 Jane.Labs2.pdf

是的,文件名中有空格...继承的代码问题。这是不起作用的文件名:

623 Jane.Labs.pdf

似乎不是文件名问题。这最终将通过网络,但我正在检查它在服务器上制作的实际zip文件,这就是我收到错误的地方。

以下是代码:

$zip = new ZipArchive();
$zfileName = $GLOBALS["localUploadRoot"] . $zfile;
$requests = $this->getRequests(true);
foreach ($requests AS $r) {
    if (file_exists($GLOBALS["localInboundRequests"] . $r["file"])) {
        $zip->addFile($GLOBALS["localInboundRequests"] . $r["file"], $r["file"]);
    }
}
$zip->close();

编辑2: 对不起,我无法发帖。它有个人信息。

3 个答案:

答案 0 :(得分:4)

Zip文件中的文件限制是4千兆字节(未压缩的文件大小),除非您使用zip64,这在php中尚不支持。 请参阅http://bugs.php.net/bug.php?id=51353

答案 1 :(得分:3)

zip文件的限制是4GB(压缩文件)。如果压缩文件大小将大于4GB,则无法解压缩。所以,更好的方法是将您的zip文件拆分为4GB。

答案 2 :(得分:0)

由于zip文件的自然文件大小限制为4GB(约为3,6GB),因此该类会生成大于4 GB的损坏文件。使用tar.gz是一个合适的选择。