我正在尝试下载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.:我在文件名
-
)而不是冒号