$zip = new ZipArchive();
$filename = $first_name . ".zip";
if ($zip->open($filename, ZipArchive::CREATE)!==TRUE) {
exit("cannot open <$filename>\n");
}
$zip->addFile($first_name . ".clean");
$zip->addFile($first_name . ".log");
$zip->addFile($first_name . ".result");
$zip->addFile($first_name . ".txt");
$zip->close();
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=$filename");
header("Content-length: " . filesize($filename));
header("Expires: 0");
header("Pragma: public");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header('Cache-Control: max-age=0'); // no cache
header("Content-Transfer-Encoding: binary");
ob_end_flush();
readfile("$filename");
我尝试通过PHP代码创建.zip文件,并通过浏览器在localhost上下载。下载的zip无法解压缩并显示如下错误消息:
存档:upload_pnt-prs.zip 找不到中心目录签名。这个文件不是 一个zip文件,或者它构成一个多部分存档的磁盘。在里面 后一种情况,将在上面找到中心目录和zipfile注释 此存档的最后一个磁盘。 解压缩:在upload_pnt-prs.zip或其中一个中找不到zipfile目录 upload_pnt-prs.zip.zip,找不到upload_pnt-prs.zip.ZIP,句号。
我已经尝试了一些已经回答的解决方案,但这并没有解决我的问题。请帮忙......
答案 0 :(得分:0)
也许您应该重新排列标题序列。 我尝试了下面的代码,它可以工作
header('Pragma: public'); // required
header('Expires: 0'); // no cache
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Last-Modified: '.gmdate ('D, d M Y H:i:s', filemtime ($filename)).' GMT');
header('Cache-Control: private',false);
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '.filesize($filename)); // provide file size
header('Connection: close');
readfile($filename);
exit();
希望这对你有用