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 相关文章推荐
用文本文件实现的动态实时发布新闻的程序
Oct 09 PHP
PHP的中问验证码
Nov 25 PHP
ini_set的用法介绍
Jan 07 PHP
destoon调用企业会员公司形象图片的实现方法
Aug 21 PHP
php验证session无效的解决方法
Nov 04 PHP
PHP连接access数据库
Mar 27 PHP
基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码
Aug 25 PHP
php微信公众号开发(3)php实现简单微信文本通讯
Dec 15 PHP
深入理解PHP的远程多会话调试
Sep 21 PHP
Laravel下生成验证码的类
Nov 15 PHP
php定期拉取数据对比方法实例
Sep 22 PHP
Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析
May 15 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
?生?D片??C字串
2006/12/06 PHP
PHP获取表单textarea数据中的换行问题
2010/09/10 PHP
解析PHP获取当前网址及域名的实现代码
2013/06/23 PHP
php源码的安装方法和实例
2019/09/26 PHP
分享别人写的一个小型js框架
2007/08/13 Javascript
很酷的javascript loading效果代码
2008/06/18 Javascript
js 匿名调用实现代码
2009/06/19 Javascript
javascript利用初始化数据装配模版的实现代码
2010/11/17 Javascript
Jquery下attr和removeAttr的使用方法
2010/12/28 Javascript
javaScript 利用闭包模拟对象的私有属性
2011/12/29 Javascript
JavaScript设计模式学习之“类式继承”
2015/03/12 Javascript
js随机生成字母数字组合的字符串 随机动画数字
2015/09/02 Javascript
JS实现网站菜单拖拽移位效果的方法
2015/09/24 Javascript
javascript图片滑动效果实现
2021/01/28 Javascript
js表单验证实例讲解
2016/03/31 Javascript
微信小程序 获取微信OpenId详解及实例代码
2016/10/31 Javascript
JavaScript利用Date实现简单的倒计时实例
2017/01/12 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
vuejs如何配置less
2017/04/25 Javascript
js实现3D照片墙效果
2019/10/28 Javascript
JavaScript中arguments的使用方法详解
2020/12/20 Javascript
python中使用urllib2获取http请求状态码的代码例子
2014/07/07 Python
Python 自动补全(vim)
2014/11/30 Python
python统计字母、空格、数字等字符个数的实例
2018/06/29 Python
python中单下划线(_)和双下划线(__)的特殊用法
2019/08/29 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
2020/02/04 Python
css3实现可拖动的魔方3d效果
2019/05/07 HTML / CSS
飞利浦西班牙官方网站:Philips西班牙
2020/02/17 全球购物
Linux中如何用命令创建目录
2016/12/02 面试题
Ajax的优点和缺点
2014/11/21 面试题
四年级下册教学反思
2014/02/01 职场文书
数控专业大学毕业生职业规划范文
2014/02/06 职场文书
大学运动会加油稿200字(5篇)
2014/09/27 职场文书
2014年财务工作总结与计划
2014/12/08 职场文书
小学英语教学反思范文
2016/02/15 职场文书
入团申请书格式
2019/06/20 职场文书