我正在用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: 对不起,我无法发帖。它有个人信息。
答案 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是一个合适的选择。