我使用php ZipArchive快速創建一個zip文件並將其發回給用戶。我壓縮文件臨時存儲上述文檔根目錄文件夾中,然後先有後的代碼由PHP發送的ZIP歸檔文件已損壞
header('Content-type:application/zip');
header('Content-Disposition: inline; filename="'.("file.zip").'"');
header("Content-Transfer-Encoding: binary");
header("Content-Length:".filesize($file));
$fh = fopen($file,'rb');
fpassthru($fh);
寄回發出了
$zip->close()
,以確保該文件未打開。我遇到的問題是這個 - 存儲的zip文件是一個有效的存檔,我可以在Windows 7,7Zip,WinZIP等中打開。但是,當我使用上面的代碼向下發送文件時,它會以0xD 0xA對在文件開始時足以使其損壞。我無法弄清楚這些角色可能來自哪裏。這是一個已知的錯誤與fopen/fpassthru?任何幫助將非常感激。
提示:有['readfile'] (http://php.net/readfile)直接輸出文件... – deceze
是否加入'fclose($ fh);退出();'在最後的幫助? – Bart
另外,你確定沒有其他輸出? PHP文件本身的BOM?任何空白? – deceze