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 相关文章推荐
PHP 一个页面执行时间类代码
Mar 05 PHP
php学习笔记 PHP面向对象的程序设计
Jun 13 PHP
PHP人民币金额数字转中文大写的函数代码
Feb 27 PHP
编写php应用程序实现摘要式身份验证的方法详解
Jun 08 PHP
php class类的用法详细总结
Oct 17 PHP
php对二维数组进行排序的简单实例
Dec 19 PHP
10个简化PHP开发的工具
Dec 25 PHP
PHP mysql事务问题实例分析
Jan 18 PHP
PHP+Ajax+JS实现多图上传
May 07 PHP
PHP中explode函数和split函数的区别小结
Aug 24 PHP
PHP检测接口Traversable用法详解
Dec 29 PHP
实例讲解php将字符串输出到HTML
Jan 27 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获取mysql数据表的字段名称和详细信息的方法
2014/09/27 PHP
Centos6.5和Centos7 php环境搭建方法
2016/05/27 PHP
利用php生成验证码
2017/02/23 PHP
Yii框架批量插入数据扩展类的简单实现方法
2017/05/23 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
2019/10/08 PHP
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
基于jQuery的的一个隔行变色,鼠标移动变色的小插件
2010/07/06 Javascript
关于jquery css的使用介绍
2013/04/18 Javascript
Js,alert出现乱码问题的解决方法
2013/06/19 Javascript
js星星评分效果
2014/07/24 Javascript
Jquery对象和Dom对象的区别分析
2014/11/20 Javascript
微信企业号开发之微信考勤百度地图定位
2015/09/11 Javascript
基于jquery实现表格无刷新分页
2016/01/07 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
2016/12/27 Javascript
vue双向绑定简要分析
2017/03/23 Javascript
JavaScript简单拖拽效果(1)
2017/05/17 Javascript
JS时间控制实现动态效果的实例讲解
2017/07/31 Javascript
vue-router 源码实现前端路由的两种方式
2018/07/02 Javascript
vue3.0 CLI - 1 - npm 安装与初始化的入门教程
2018/09/14 Javascript
关于自定义Egg.js的请求级别日志详解
2018/12/12 Javascript
解决ie11 SCRIPT5011:不能执行已释放Script的代码问题
2019/05/05 Javascript
对Layer弹窗使用及返回数据接收的实例详解
2019/09/26 Javascript
Vue 设置axios请求格式为form-data的操作步骤
2019/10/29 Javascript
python 数据加密代码
2008/12/24 Python
对python3 urllib包与http包的使用详解
2018/05/10 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
2019/05/10 Python
详解python实现数据归一化处理的方式:(0,1)标准化
2019/07/17 Python
Flask框架学习笔记之表单基础介绍与表单提交方式
2019/08/12 Python
基于python-pptx库中文文档及使用详解
2020/02/14 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
2020/06/24 Python
使用CSS3来绘制一个月食图案
2015/07/18 HTML / CSS
浅谈HTML5 FileReader分布读取文件以及其方法简介
2017/11/09 HTML / CSS
财产公证书样本
2014/04/04 职场文书
参观邀请函范文
2015/02/02 职场文书
大学生,三分钟即兴演讲稿
2019/07/22 职场文书
豆瓣2021评分最高动画剧集-豆瓣评分最高的动画剧集2021
2022/03/18 日漫