TP 利用ZipArchive打包下载
已在项目中使用,亲测可用。
//图片
$imgs = [
/Uploads/images/15744890768927.jpg,
/Uploads/images/15744890751973.jpg,
/Uploads/images/15744890573979.jpg
];
$filename = download.zip; //最终生成的文件名(含路径)
if(file_exists($filename)){
unlink($filename);
}
//重新生成文件
$zip = new ipArchive();
if($zip->open($filename,IPARCHIVE::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);
}
