PHP之ZipArchive打包压缩文件

1、Linux 安装 nginx 安装zlib库

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

1、材料图片、单据图片,分别压缩打包到“材料.zip”和“单据.zip”。
2、“材料.zip”和“单据.zip”在压缩打包到“订单.zip”
3、支持批量导出多个订单的图片信息所有订单的压缩文件,打包压缩到“all.zip”

//定义总的压缩包文件名称
$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');
}


 

你可能感兴趣的:(php,开发语言)