如何使用php生成zip压缩包


Posted in PHP onApril 21, 2021

压缩一个文件

我们将一个文件生成一个压缩包。

<?php
$path = "c:/wamp/www/log.txt";
$filename = "test.zip";
$zip = new ZipArchive();
$zip->open($filename,ZipArchive::CREATE);   //打开压缩包
$zip->addFile($path,basename($path));   //向压缩包中添加文件
$zip->close();  //关闭压缩包

上述代码将c:/wamp/www/log.txt文件压缩生成了test.zip,并保存在当前目录。

压缩多个文件

压缩多个文件,其实就是addFile执行多次,可以通过数组的遍历来实现。

<?php
$fileList = array(
    "c:/wamp/www/log.txt",
    "c:/wamp/www/weixin.class.php"
);
$filename = "test.zip";
$zip = new ZipArchive();
$zip->open($filename,ZipArchive::CREATE);   //打开压缩包
foreach($fileList as $file){
    $zip->addFile($file,basename($file));   //向压缩包中添加文件
}
$zip->close();  //关闭压缩包

压缩一个目录

<?php
function addFileToZip($path,$zip){
    $handler=opendir($path); //打开当前文件夹由$path指定。
    while(($filename=readdir($handler))!==false){
        if($filename != "." && $filename != ".."){//文件夹文件名字为'.'和‘..',不要对他们进行操作
            if(is_dir($path."/".$filename)){// 如果读取的某个对象是文件夹,则递归
                addFileToZip($path."/".$filename, $zip);
            }else{ //将文件加入zip对象
                $zip->addFile($path."/".$filename);
            }
        }
    }
    @closedir($path);
}
$zip=new ZipArchive();
if($zip->open('rsa.zip', ZipArchive::OVERWRITE)=== TRUE){
    addFileToZip('rsa/', $zip); //调用方法,对要打包的根目录进行操作,并将ZipArchive的对象传递给方法
    $zip->close(); //关闭处理的zip文件
}

压缩并下载zip包

我的时候,我们需要打包之后,提供下载,然后删除压缩包。

可以分为以下几步:

  1. 判断给出的路径,是文件夹,还是文件。文件夹还需要遍历添加文件。
  2. 设置相关文件头,并使用readfile函数提供下载。
  3. 使用unlink函数删除压缩包
<?php
function addFileToZip($path,$zip){
    $handler=opendir($path); //打开当前文件夹由$path指定。
    while(($filename=readdir($handler))!==false){
        if($filename != "." && $filename != ".."){//文件夹文件名字为'.'和‘..',不要对他们进行操作
            if(is_dir($path."/".$filename)){// 如果读取的某个对象是文件夹,则递归
                addFileToZip($path."/".$filename, $zip);
            }else{ //将文件加入zip对象
                $zip->addFile($path."/".$filename);
            }
        }
    }
    @closedir($path);
}
$zip=new ZipArchive();
if($zip->open('rsa.zip', ZipArchive::OVERWRITE)=== TRUE){
    $path = 'rsa/';
    if(is_dir($path)){  //给出文件夹,打包文件夹
        addFileToZip($path, $zip);
    }else if(is_array($path)){  //以数组形式给出文件路径
        foreach($path as $file){
            $zip->addFile($file);
        }
    }else{      //只给出一个文件
        $zip->addFile($path);
    }

    $zip->close(); //关闭处理的zip文件
}

以上就是如何使用php生成zip压缩包的详细内容,更多关于php生成zip压缩包的资料请关注三水点靠木其它相关文章!

PHP 相关文章推荐
通过文字传递创建的图形按钮
Oct 09 PHP
SSI指令
Nov 25 PHP
在PHP中使用模板的方法
May 24 PHP
PHP 上传文件的方法(类)
Jul 30 PHP
php中常用的预定义变量小结
May 09 PHP
php加水印的代码(支持半透明透明打水印,支持png透明背景)
Jan 17 PHP
PHP中模拟处理HTTP PUT请求的例子
Jul 22 PHP
PHP获取当前完整URL地址的函数
Dec 21 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
Jun 03 PHP
PHP文件操作实例总结
Sep 27 PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
Oct 11 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
Sep 30 PHP
PHP使用非对称加密算法RSA
laravel ajax curd 搜索登录判断功能的实现
thinkphp 获取控制器及控制器方法
Apr 16 #PHP
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
PHP实现考试倒计时功能代码
Apr 16 #PHP
PHP对接阿里云虚拟号的实现(号码隐私保护)
PHP 对接美团大众点评团购券(门票)的开发步骤
You might like
动易数据转成dedecms的php程序
2007/04/07 PHP
深入PHP autoload机制的详解
2013/06/09 PHP
PHP实现HTML生成PDF文件的方法
2014/11/07 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
2017/03/15 PHP
基于jquery的网页SELECT下拉框美化代码
2010/10/28 Javascript
jQuery+HTML5实现手机摇一摇换衣特效
2015/06/05 Javascript
基于JavaScript实现购物网站商品放大镜效果
2016/09/06 Javascript
详解JS中遍历语法的比较
2017/04/07 Javascript
Element-ui DatePicker显示周数的方法示例
2019/07/19 Javascript
js实现select下拉框选择
2020/01/11 Javascript
解决VUE项目使用Element-ui 下拉组件的验证失效问题
2020/11/07 Javascript
JS闭包原理及其使用场景解析
2020/12/03 Javascript
vue实现轮播图帧率播放
2021/01/26 Vue.js
[09:31]2016国际邀请赛中国区预选赛Yao赛后采访 答题送礼
2016/06/27 DOTA
[00:29]2019完美世界全国高校联赛(秋季赛)总决赛海口落幕
2019/12/10 DOTA
python实现自主查询实时天气
2018/06/22 Python
python opencv捕获摄像头并显示内容的实现
2019/07/11 Python
python将邻接矩阵输出成图的实现
2019/11/21 Python
解决import tensorflow as tf 出错的原因
2020/04/16 Python
详解Python中的编码问题(encoding与decode、str与bytes)
2020/09/30 Python
详解用selenium来下载小姐姐图片并保存
2021/01/26 Python
H&M美国官网:欧洲最大的服饰零售商
2016/09/07 全球购物
美国最大的城市服装和运动鞋零售商:Jimmy Jazz
2016/11/19 全球购物
德国领先的大尺码和超大尺码男装在线零售商:Bigtex
2019/06/22 全球购物
DC Shoes荷兰官方网站:美国极限运动品牌
2019/10/22 全球购物
阿里巴巴美国:Alibaba美国
2019/11/24 全球购物
北美最大的参茸药食商城:德成行
2020/12/06 全球购物
出口公司经理求职简历中的自我评价
2013/10/13 职场文书
机械化及自动化毕业生的自我评价分享
2013/11/06 职场文书
教师绩效工资方案
2014/02/01 职场文书
大学生个人实习的自我评价
2014/02/15 职场文书
2014年幼儿园老师工作总结
2014/12/05 职场文书
刑事撤诉申请书
2015/05/18 职场文书
国家助学金受助感言
2015/08/01 职场文书
一篇文章带你了解Python和Java的正则表达式对比
2021/09/15 Python
Nginx代理Redis哨兵主从配置的实现
2022/07/15 Servers