如何使用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 相关文章推荐
PHP中的超全局变量
Oct 09 PHP
php 静态化实现代码
Mar 20 PHP
php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
Jun 18 PHP
php socket客户端及服务器端应用实例
Jul 04 PHP
ThinkPHP实例化模型的四种方法概述
Aug 22 PHP
PHP中的一些常用函数收集
May 26 PHP
详解WordPress中分类函数wp_list_categories的使用
Jan 04 PHP
PHP正则表达式入门教程(推荐)
May 18 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
May 18 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
May 16 PHP
lnmp安装多版本PHP共存的方法详解
Aug 02 PHP
Yii框架应用组件用法实例分析
May 15 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
PHP设计模式之责任链模式的深入解析
2013/06/13 PHP
PHP防止表单重复提交的几种常用方法汇总
2014/08/19 PHP
php使用timthumb生成缩略图的方法
2016/01/22 PHP
php版微信开发之接收消息,自动判断及回复相应消息的方法
2016/09/23 PHP
PHP常见字符串处理函数用法示例【转换,转义,截取,比较,查找,反转,切割】
2016/12/24 PHP
PHP如何读取由JavaScript设置的Cookie
2017/03/22 PHP
在js中单选框和复选框获取值的方式
2009/11/06 Javascript
将CKfinder整合进CKEditor3.0的新方法
2010/01/10 Javascript
jQuery.Validate 使用笔记(jQuery Validation范例 )
2010/06/25 Javascript
jquery中选择块并改变属性值的方法
2013/07/31 Javascript
jQuery多媒体插件jQuery Media Plugin使用详解
2014/12/19 Javascript
JavaScript获取浏览器信息的方法
2015/11/20 Javascript
jQuery文字横向滚动效果的实现代码
2016/05/31 Javascript
Js类的静态方法与实例方法区分及jQuery拓展的两种方法
2016/06/03 Javascript
Node.js Sequelize如何实现数据库的读写分离
2016/10/23 Javascript
JS实现unicode和UTF-8之间的互相转换互转
2017/07/05 Javascript
vue引入js数字小键盘的实现代码
2018/05/14 Javascript
详解ES6中的三种异步解决方案
2018/06/28 Javascript
[03:11]完美世界DOTA2联赛PWL DAY8集锦
2020/11/09 DOTA
Python常用的日期时间处理方法示例
2015/02/08 Python
python实现复制整个目录的方法
2015/05/12 Python
python使用matplotlib绘制柱状图教程
2017/02/08 Python
Python 正则表达式实现计算器功能
2017/04/29 Python
matplotlib图例legend语法及设置的方法
2020/07/28 Python
微信小程序之html5 canvas绘图并保存到系统相册
2019/06/20 HTML / CSS
英国最受欢迎的手表网站:Watch Shop
2016/10/21 全球购物
函授毕业自我鉴定
2013/12/19 职场文书
部队领导证婚词
2014/01/12 职场文书
教师节促销活动方案
2014/02/14 职场文书
《奇妙的国际互联网》 教学反思
2014/02/25 职场文书
辅导员评语
2014/05/04 职场文书
优质服务口号
2014/06/11 职场文书
升学宴答谢词
2015/01/05 职场文书
2015年街道除四害工作总结
2015/05/15 职场文书
护士爱岗敬业心得体会
2016/01/25 职场文书
2016应届毕业生自荐信范文
2016/01/28 职场文书