我正在尝试下载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);
?>
但是当我运行这个脚本时。它只下载一个空的上传文件夹。 我不知道为什么会这样。请任何人帮助我。
答案 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:我在文件名中使用了减号(-
)而不是冒号