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');
}