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(3)
Oct 09 PHP
Php部分常见问题总结
Oct 09 PHP
一个可以删除字符串中HTML标记的PHP函数
Oct 09 PHP
PHP文件上传原理简单分析
May 29 PHP
PHP中的函数-- foreach()的用法详解
Jun 24 PHP
php遍历文件夹下的所有文件和子文件夹示例
Mar 20 PHP
php判断电脑访问、手机访问的例子
May 10 PHP
PHP高手需要要掌握的知识点
Aug 21 PHP
php实现的Captcha验证码类实例
Sep 22 PHP
php使用类继承解决代码重复的问题
Feb 11 PHP
最准确的php截取字符串长度函数
Oct 29 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
Oct 04 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和oracle数据库性能比较
2006/10/09 PHP
一键删除顽固的空文件夹 软件下载
2007/01/26 PHP
php小技巧之过滤ascii控制字符
2014/05/14 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
2019/03/07 PHP
Nigma vs Alliance BO5 第四场2.14
2021/03/10 DOTA
EasyUI中的tree用法介绍
2011/11/01 Javascript
JavaScript实现GriwView单列全选(自写代码)
2013/05/13 Javascript
解析js如何获取当前url中的参数值并复制给input
2013/06/23 Javascript
jQuery设置和移除文本框默认值的方法
2015/03/09 Javascript
jQuery选择器源码解读(七):elementMatcher函数
2015/03/31 Javascript
JavaScript实现基于Cookie的存储类实例
2015/04/10 Javascript
Bootstrap实现弹性搜索框
2016/07/11 Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
2016/07/11 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
2016/10/05 Javascript
微信小程序 实现拖拽事件监听实例详解
2016/11/16 Javascript
jQuery日程管理插件fullcalendar使用详解
2017/01/07 Javascript
Vue学习笔记之表单输入控件绑定
2017/09/05 Javascript
node.js的http.createServer过程深入解析
2019/06/06 Javascript
python中的reduce内建函数使用方法指南
2014/08/31 Python
Python解决走迷宫问题算法示例
2018/07/27 Python
对python requests的content和text方法的区别详解
2018/10/11 Python
python实现的爬取电影下载链接功能示例
2019/08/26 Python
Python Django 前后端分离 API的方法
2019/08/28 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
2020/03/14 Python
Python-openCV开运算实例
2020/07/05 Python
整理的15个非常有用的 HTML5 开发教程和速查手册
2011/10/18 HTML / CSS
Visual-Click葡萄牙:欧洲领先的在线眼镜商
2020/02/17 全球购物
工厂厂长岗位职责
2013/11/08 职场文书
优秀共产党员先进事迹
2014/01/27 职场文书
总经理岗位职责说明书
2014/07/30 职场文书
企业贷款委托书格式
2014/09/12 职场文书
2014迎国庆标语大全
2014/09/19 职场文书
2014年高一班主任工作总结
2014/12/05 职场文书
优秀班主任推荐材料
2014/12/17 职场文书
工厂采购员岗位职责
2015/04/07 职场文书
CentOS7和8下安装Maven3.8.4
2022/04/07 Servers