//导出压缩包
// $images 图片数组
public function Download($images)
{
// 压缩包名称
$filename = "./upload/" . date('Y-m-d') . "图片资源.zip";
// 生成文件
$zip = new \ZipArchive();
// 使用本类,linux需开启zlib,windows需取消php_zip.dll前的注释
if ($zip->open($filename, \ZipArchive::OVERWRITE) !== true) {
//OVERWRITE 参数会覆写压缩包的文件 文件必须已经存在
if ($zip->open($filename, \ZipArchive::CREATE) !== true) {
// 文件不存在则生成一个新的文件 用CREATE打开文件会追加内容至zip
exit('无法打开文件,或者文件创建失败');
}
}
foreach ($images as $key => $v) {
// 在压缩包里面创建的文件夹名称
$file_son = date('Y-m-d');
//在压缩包里面创建文件夹
$zip->addEmptyDir($file_son);
// 本地图片使用 addFile 方法 因为 $v['url'] 是需要本地路径
$zip->addFile($v['url'], basename($v['name']));
// 网络图片 需要使用 addFromString 方法 后面增加 file_get_contents 获取图片资源
// 把图片移动到对应的文件夹里面 并且重新命名
if ($v['url']) $zip->addFromString($file_son.'/'.($key+1).'.png', file_get_contents($v['url']));
}
// 关闭
$zip->close();
//下面是输出下载;
header("Cache-Control: max-age=0");
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);
exit;
}
thinkPHP自带的图片批量打包扩展ZipArchive
最新推荐文章于 2024-06-03 15:33:05 发布