我正在用PHP創建一個zip文件供用戶下載。我沒有從PHP或檢查zipArchive類的GetStatusString函數中得到任何錯誤。但是,如果我將一些文件放入存檔中,那麼當我嘗試打開它時,會出現「壓縮(壓縮)文件夾無效或損壞」錯誤。我檢查了所有我添加的文件,它們都很好。我能想到的唯一的事情是較大的文件造成問題。但「大」文件只有大約半兆字節,並且我找不到有關zipArchive的文件大小限制的任何文檔。對其他事情有任何想法可以嘗試,所以我可以找出這個問題?謝謝。PHP的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: 對不起,我不能發佈的文件。它包含個人信息。
也許你應該在構建zip文件的位置發佈代碼的相關端口。當然,500K文件不會造成麻煩。 – Artefacto 2010-08-12 22:55:10
創作過程是否真的完成了?你能顯示一些你正在添加的文件的代碼和例子文件名嗎?他們不會碰巧擁有特殊字符的名字? – 2010-08-12 22:56:10
CLI還是網絡?你是先把它們保存到磁盤上,還是直接把它們「流」到客戶端。 (如果是後者,請確保您沒有任何zlib壓縮進行。) – Matthew 2010-08-12 22:57:45