PHP之ZipArchive打包压缩文件

1、Linux 安装 nginx 安装zlib库

2、使用,目前我这边的需求是。

1、材料图片、单据图片,分别压缩打包到"材料.zip"和"单据.zip"。

2、"材料.zip"和"单据.zip"在压缩打包到"订单.zip"

3、支持批量导出多个订单的图片信息所有订单的压缩文件,打包压缩到"all.zip"

php 复制代码
//定义总的压缩包文件名称
$all_name = 'all.zip';
// 创建ZipArchive对象
$zip_all = new ZipArchive();
if ($zip_all->open($all_name, ZipArchive::CREATE) === TRUE) {
    //循环查询多个订单信息
    $sql = "select * from shop_order_piesong where id in (76,80)";
    $arr = _get_all($sql);
    foreach ($arr as $i => $rs) {
        //获取压缩材料图片数组
        $admin4_pic1 = $rs["admin4_pic1"] ? explode(',', rtrim($rs["admin4_pic1"], ',')) : array();
        //创建材料压缩包文件
        $zip_cailiao = new ZipArchive();
        if ($zip_cailiao->open('cailiao.zip', ZipArchive::CREATE) === TRUE) {
            // 添加文件到Zip文件中
            foreach ($admin4_pic1 as $ip => $rsp) {
                $zip_cailiao->addFile(dirname(dirname(__FILE__)) . $rsp, 'photo' . $ip . '.jpg');
            }
            // 关闭Zip文件
            $zip_cailiao->close();
        }

        //创建单据压缩包文件
        $admin4_pic = $rs["admin4_pic"] ? explode(',', rtrim($rs["admin4_pic"], ',')) : array();
        // 创建ZipArchive对象
        $zip_danju = new ZipArchive();
        if ($zip_danju->open('danju.zip', ZipArchive::CREATE) === TRUE) {
            // 添加文件到Zip文件中
            foreach ($admin4_pic as $ip => $rsp) {
                $zip_danju->addFile(dirname(dirname(__FILE__)) . $rsp, 'photo' . $ip . '.jpg');
            }
            // 关闭Zip文件
            $zip_danju->close();
        }

        //整合两个图片压缩包生成新的压缩包
        $zip_or = new ZipArchive();

        if ($zip_or->open($rs["danhao"] . '.zip', ZipArchive::CREATE) === TRUE) {
            $zip_or->addFile(dirname(dirname(__FILE__)) . '/adminIsAdmin/cailiao.zip', '材料.zip');
            $zip_or->addFile(dirname(dirname(__FILE__)) . '/adminIsAdmin/danju.zip', '单据.zip');
            // 关闭Zip文件
            $zip_or->close();
      
        }

        //循环整个订单放入总的压缩包文件
        $zip_all->addFile(dirname(dirname(__FILE__)) . '/adminIsAdmin/' . $rs["danhao"] . '.zip', $rs["danhao"] . '.zip');

    }
    // 关闭Zip文件
    $zip_all->close();
}

//下载Zip文件到本地
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename=' . $all_name . '');
header('Content-Length: ' . filesize($all_name));
readfile($all_name);

//使用完成后在服务器中删除压缩包文件
unlink("cailiao.zip");
unlink("danju.zip");
unlink($all_name);

$sql = "select * from shop_order_piesong where id in (76,80)";
$arr = _get_all($sql);
foreach ($arr as $i => $rs) {
    unlink($rs["danhao"] . '.zip');
}
相关推荐
搞一搞汽车电子13 小时前
S32K3平台eMIOS 应用说明
开发语言·驱动开发·笔记·单片机·嵌入式硬件·汽车
总有刁民想爱朕ha14 小时前
车牌模拟生成器:Python3.8+Opencv代码实现与商业应用前景(C#、python 开发包SDK)
开发语言·python·数据挖掘
悠悠~飘14 小时前
php简介(第一天打卡)
php
小菜全14 小时前
uniapp新增页面及跳转配置方法
开发语言·前端·javascript·vue.js·前端框架
人衣aoa14 小时前
Python编程基础(八) | 类
开发语言·python
晚云与城15 小时前
今日分享:C++ Stack和queue(栈与队列)
开发语言·c++
小莞尔15 小时前
【51单片机】【protues仿真】基于51单片机停车场的车位管理系统
c语言·开发语言·单片机·嵌入式硬件·51单片机
张烫麻辣亮。15 小时前
golang-gin包
开发语言·golang·gin
yuluo_YX15 小时前
Go Style 代码风格规范
开发语言·后端·golang
百锦再15 小时前
脚本语言的大浪淘沙或百花争艳
java·开发语言·人工智能·python·django·virtualenv·pygame