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 相关文章推荐
提问的智慧(2)
Oct 09 PHP
实现树状结构的两种方法
Oct 09 PHP
加速XP搜索功能堪比vista
Mar 22 PHP
php解决约瑟夫环示例
Apr 09 PHP
PHP使用Mysql事务实例解析
Sep 08 PHP
thinkphp四种url访问方式详解
Nov 28 PHP
Yii把CGridView文本框换成下拉框的方法
Dec 03 PHP
PHP中使用xmlreader读取xml数据示例
Dec 29 PHP
CI框架支持$_GET的两种实现方法
May 18 PHP
PHP生成静态HTML文档实现代码
Jun 23 PHP
PHP PDOStatement::errorInfo讲解
Jan 31 PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
Sep 17 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 利用Mail_MimeDecode类提取邮件信息示例
2014/01/26 PHP
php带抄送和密件抄送的邮件发送方法
2015/03/20 PHP
php模拟post提交请求调用接口示例解析
2020/08/07 PHP
javascript设计模式 封装和信息隐藏(上)
2012/07/24 Javascript
JavaScript 实现类的多种方法实例
2013/05/01 Javascript
JS对象转换为Jquery对象示例
2014/01/26 Javascript
JavaScript中的逻辑判断符&amp;&amp;、||与!介绍
2014/12/31 Javascript
javascript实现瀑布流自适应遇到的问题及解决方案
2015/01/28 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
2015/10/31 Javascript
jQuery插件制作的实例教程
2016/05/16 Javascript
JavaScript实现打开链接页面的方式汇总
2016/06/02 Javascript
使用jQuery的load方法设计动态加载及解决被加载页面js失效问题
2017/03/01 Javascript
JavaScript反弹动画效果的实现代码
2017/07/13 Javascript
对angular2中的ngfor和ngif指令嵌套实例讲解
2018/09/12 Javascript
JavaScript或jQuery 获取option value值方法解析
2020/05/12 jQuery
Vue单页面应用中实现Markdown渲染
2021/02/14 Vue.js
[03:08]TI9战队档案 - Vici Gaming
2019/08/20 DOTA
[01:20]PWL S2开团时刻第三期——团战可以输 蝙蝠必须死
2020/11/26 DOTA
python通过ElementTree操作XML获取结点读取属性美化XML
2013/12/02 Python
python动态加载包的方法小结
2016/04/18 Python
python中闭包Closure函数作为返回值的方法示例
2017/12/17 Python
在Pycharm中将pyinstaller加入External Tools的方法
2019/01/16 Python
Python3之不使用第三方变量,实现交换两个变量的值
2019/06/26 Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
2019/09/16 Python
将python依赖包打包成window下可执行文件bat方式
2019/12/26 Python
python百行代码自制电脑端网速悬浮窗的实现
2020/05/12 Python
使用Python-OpenCV消除图像中孤立的小区域操作
2020/07/05 Python
Python使用Selenium模拟浏览器自动操作功能
2020/09/08 Python
HTML5 File接口在web页面上使用文件下载
2017/02/27 HTML / CSS
先进个人事迹材料
2014/01/25 职场文书
机械专业求职信范文
2014/07/15 职场文书
2014幼儿园大班工作总结
2014/11/10 职场文书
2015年119消防宣传日活动总结
2015/03/24 职场文书
龙猫观后感
2015/06/09 职场文书
一年级语文教学随笔
2015/08/14 职场文书
mysql优化之query_cache_limit参数说明
2021/07/01 MySQL