0

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

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

4

1 回答 1

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

于 2013-07-17T12:32:32.560 回答