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);
}
经验分享 程序员 微信小程序 职场和发展