使用php下载zip文件夹


Downloading zip folder using 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);
?>

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

我在你的问题中看到了三点

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.:我在文件名

中使用了减号(-)而不是冒号