thinkPHP自带的图片批量打包扩展ZipArchive

//导出压缩包
// $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;
}

如果你觉得这篇文章对你有所帮助,不妨点个赞呗,谢谢观看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值