已在项目中使用,亲测可用。
//图片
$imgs = [
'/Uploads/images/15744890768927.jpg',
'/Uploads/images/15744890751973.jpg',
'/Uploads/images/15744890573979.jpg'
];
$filename = 'download.zip'; //最终生成的文件名(含路径)
if(file_exists($filename)){
unlink($filename);
}
//重新生成文件
$zip = new \ZipArchive();
if($zip->open($filename,\ZIPARCHIVE::CREATE)===true){
//把图片一张一张加进去压缩
foreach($imgs as $v){
$file = $_SERVER['DOCUMENT_ROOT'].$v['qrcode'];
$zip->addFile($file,pathinfo($file)['basename']); //写入第二个参数是为了防止把路径也打包进去,可不填写
}
//打包zip
$zip->close();
//输出下载
header("Cache-Control: public");
header("Content-Description: File Transfer");
header('Content-disposition: attachment; filename='.basename($filename)); //文件名
header("Content-Type: application/zip"); //zip格式的
header("Content-Transfer-Encoding: binary"); //告诉浏览器,这是二进制文件
header('Content-Length: '. filesize($filename)); //告诉浏览器,文件大小
@readfile($filename);
@unlink($filename);
}