使用php下载zip文件夹

时间:2013-07-17 12:12:06

标签: php download zip

我正在尝试下载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);
?>

但是当我运行这个脚本时。它只下载一个空的上传文件夹。 我不知道为什么会这样。请任何人帮助我。

1 个答案:

答案 0 :(得分: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:我在文件名中使用了减号(-)而不是冒号