2013-07-17 131 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:我用减号(-)而不是冒号在文件名