在一個腳本,我需要做到以下幾點:PHP:如何處理單個腳本中的文件處理和下載操作?
- 創建一個ZIP出文件的目錄中
- 力新創建的壓縮的下載
我的問題是,每當我嘗試在單個腳本中執行此操作時,下載的zip文件已損壞(雖然文件大小不錯)。如果我在兩個獨立的腳本調用中觸發 進程,則下載的zip文件可以正常使用。
我想問題是壓縮保存到文件進程並不完全是 在下載開始之前完成。奇怪的是,它並沒有解決問題 之間插入睡眠(3)...下面的代碼大綱。
如何確保zip文件在強制下載開始之前完全完成?
祺/喬納斯
// 1. create a zip
$createZipFile = new CreateZipFile('temp.zip');
$createZipFile->zipDirectory('temp/', '.');
$createZipFile->saveZipFile();
sleep(3); // <-- Doesn't matter!
// 2. force zip download
$fileServer = new FileServer();
// Line below gives a corrupted zip when run in same script as 1.
$fileServer->forzeDownload('temp.zip');
嘗試在文本編輯器中打開損壞的zip文件 - 它可能會揭示出現問題的地方。有可能它只包含一個404頁(顯然這不是一個格式正確的zip文件)。 – JorenB 2009-08-23 10:43:27
您可能會有一些額外的輸出(可能是PHP塊之前的單個空格/換行符),這會損壞您的數據。 – Gumbo 2009-08-23 10:46:19