php实现对文件压缩简单的方法


Posted in PHP onSeptember 29, 2019

压缩一个文件

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

<?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如何实现对文件压缩的详细内容,感谢大家的学习和对三水点靠木的支持。

PHP 相关文章推荐
php5 图片验证码实现代码
Dec 11 PHP
php做下载文件的实现代码及文件名中乱码解决方法
Feb 03 PHP
smarty巧妙处理iframe中内容页的代码
Mar 07 PHP
浅谈php serialize()与unserialize()的用法
Jun 05 PHP
解决File size limit exceeded 错误的方法
Jun 14 PHP
php中实现获取随机数组列表的自定义函数
Apr 02 PHP
PHP生成随机密码方法汇总
Aug 27 PHP
php+ajax注册实时验证功能
Jul 20 PHP
让ThinkPHP的模板引擎达到最佳效率的方法详解
Mar 14 PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
Jul 10 PHP
PHP+Session防止表单重复提交的解决方法
Apr 09 PHP
PHP后台备份MySQL数据库的源码实例
Mar 18 PHP
Laravel 添加多语言提示信息的方法
Sep 29 #PHP
php实现登录页面的简单实例
Sep 29 #PHP
php实现推荐功能的简单实例
Sep 29 #PHP
php实现分页功能的详细实例方法
Sep 29 #PHP
laravel实现于语言包的完美切换方法
Sep 29 #PHP
laravel validate 设置为中文的例子(验证提示为中文)
Sep 29 #PHP
Laravel中validation验证 返回中文提示 全局设置的方法
Sep 29 #PHP
You might like
十天学会php之第六天
2006/10/09 PHP
php 正则匹配函数体
2009/08/25 PHP
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
2012/09/19 PHP
php 使用file_get_contents读取大文件的方法
2014/11/13 PHP
php中convert_uuencode()与convert_uuencode函数用法实例
2014/11/22 PHP
C# WinForm中实现快捷键自定义设置实例
2015/01/23 PHP
php+jQuery递归调用POST循环请求示例
2016/10/14 PHP
JQuery页面图片切换和新闻列表滚动效果的具体实现
2013/09/26 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
javascript实现网页背景烟花效果的方法
2015/08/06 Javascript
js实现具有高亮显示效果的多级菜单代码
2015/09/01 Javascript
vue.js中mint-ui框架的使用方法
2017/05/12 Javascript
简单实现js轮播图效果
2017/07/14 Javascript
javaScript手机号码校验工具类PhoneUtils详解
2017/12/08 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
2017/12/20 Javascript
nodejs实现的连接MySQL数据库功能示例
2018/01/25 NodeJs
vue router动态路由下让每个子路由都是独立组件的解决方案
2018/04/24 Javascript
JavaScript创建防篡改对象的方法分析
2018/12/30 Javascript
总结4个方面优化Vue项目
2019/02/11 Javascript
详解原生JS回到顶部
2019/03/25 Javascript
高效jQuery选择器的5个技巧实例分析
2019/11/26 jQuery
python实现人民币大写转换
2018/06/20 Python
python将秒数转化为时间格式的实例
2018/09/16 Python
对python制作自己的数据集实例讲解
2018/12/12 Python
python中selenium操作下拉滚动条的几种方法汇总
2019/07/14 Python
python文字转语音实现过程解析
2019/11/12 Python
Python3的unicode编码转换成中文的问题及解决方案
2019/12/10 Python
Python必须了解的35个关键词
2020/07/16 Python
HMV日本官网:全球知名的音乐、DVD和电脑游戏零售巨头
2016/08/13 全球购物
优秀毕业生求职信范文
2014/01/02 职场文书
幼儿园教师考核制度
2014/02/01 职场文书
高中军训感言500字
2014/02/24 职场文书
群众路线教育实践活动调研报告
2014/11/03 职场文书
研究生简历自我评
2015/03/11 职场文书
幼儿园新学期开学寄语
2015/05/27 职场文书
如何用JavaScript检测当前浏览器是无头浏览器
2021/04/27 Javascript