2013-07-17 156 views
0

我想下載zip文件夾。使用php下載zip文件夾

這裏是我的代碼

header('Content-Type: application/zip'); 
header('Content-disposition: attachment; filename=filename.zip'); 
header('Content-Length: ' . filesize($zipfilename)); 

    $files = array('../upload/ES:AIJ_168/M:MSW.doc','../upload/ES:AIJ_168/M:MSW.pdf'); 



$zipname = 'file.zip'; 
$zip = new ZipArchive; 
$zip->open($zipname, ZipArchive::CREATE); 
foreach ($files as $file) { 
    $zip->addFile($file); 
} 
$zip->close(); 

readfile($zipname); 
?> 

,但是當我運行這個script.It下載只是一個空文件夾上傳。 我不知道爲什麼會發生這種情況,請任何人幫我解決。

+0

你嘗試調試文件,看它沒有任何錯誤信息的標題?錯誤報告是否打開? –

+0

錯誤是:!無法創建上傳\ ES:AIJ_168 \ M:MSW.doc 文件名稱,目錄名稱或卷標語法不正確。 !試圖糾正無效的文件名 –

+0

看看這個:http://stackoverflow.com/questions/2088267/download-of-zip-file-runs-a-corrupted-file-php?rq=1 – Matheno

回答

0

我在你的問題

1)你發送的內容長度的文件創建

2)之前,當你取你正在使用$zipfilename文件大小看見三個點,但是當你打開用於添加您使用的文件的zip文件$zipname

3)您在文件名中使用冒號(:)。我不確定在unix上的這種用法,但是你不能在windows上用冒號命名文件。

我相信,代碼將是這樣的:

header('Content-Type: application/zip'); 
header('Content-disposition: attachment; filename=filename.zip');  

$files = array('../upload/ES-AIJ_168/M-MSW.doc','../upload/ES-AIJ_168/M-MSW.pdf'); 

$zipname = 'file.zip'; 
$zip = new ZipArchive; 
$zip->open($zipname, ZipArchive::CREATE); 
foreach ($files as $file) { 
    $zip->addFile($file); 
} 
$zip->close(); 
header('Content-Length: ' . filesize($zipname)); 
readfile($zipname); 

PS:我用減號(-)而不是冒號在文件名