/**
* 下载图片并生成压缩包
* @param $data 图片数组,一维
* @param $dir 存放路径
* @return string
*/
public function demoOne()
{
//线上图片链接
$url = ["https://z3.ax1x.com/2021/05/22/gLICwR.jpg","https://z3.ax1x.com/2021/05/22/gLTRF1.jpg"];
//保存的位置
$dir = "img/";
//判断目录是否存在 不存在则创建
if (!file_exists($dir)) {
mkdir($dir, 0777, true);
}
// 压缩包文件名
$zipName = date(‘His‘) . mt_rand(1000, 9999) . ‘.zip‘;
// 文件路径
$zipNameUrl = $dir . $zipName;
$zip = new \ZipArchive();
if ($zip->open($zipNameUrl, \ZipArchive::OVERWRITE) !== true) {
//OVERWRITE 参数会覆写压缩包的文件 文件必须已经存在
if ($zip->open($zipNameUrl, \ZipArchive::CREATE) !== true) {
// 文件不存在则生成一个新的文件 用CREATE打开文件会追加内容至zip
return ‘下载失败,文件夹不存在‘;
}
}
foreach ($url as $file) {
//抓取图片内容 file_get_contents可用curl代替 curl效率高
$fileContent = file_get_contents($file);
//添加图片
$zip->addFromString(basename($file), $fileContent);
}
$zip->close();
//没有文件
if (!file_exists($zipNameUrl)) {
return ‘下载失败,图片不存在或无法下载‘;
}
header("Cache-Control: public");
header("Content-Description: File Transfer");
header(‘Content-disposition: attachment; filename=‘ . $zipName); //文件名
header("Content-Type: application/zip"); //zip格式的
header("Content-Transfer-Encoding: binary"); //告诉浏览器,这是二进制文件
header(‘Content-Length: ‘ . filesize($zipNameUrl)); //告诉浏览器,文件大小
flush();
@readfile($zipNameUrl);
unlink($zipNameUrl); // 删除压缩包 不占空间
}
原文:https://www.cnblogs.com/fsp69/p/14799941.html