压缩整个文件

代码如下(示例):

        $zip = new \ZipArchive();$filename = 'xxx.zip';//压缩文件名,自己命名if($zip->open($filename, \ZIPARCHIVE::CREATE)!==TRUE){exit('cannot open ' . $filename .'\n');}$this->zipFolder('D:/','xxx', $zip); //被压缩文件路径 例子压缩路径为:D:/xxx$zip->close();//压缩整个文件夹以及过滤public function zipFolder($basePath,$relativePath,$zip){$handler = opendir($basePath.$relativePath);  //打开当前文件夹while(($filename = readdir($handler))!==false){ //readdir() 函数返回目录中下一个文件的文件名if($filename != '.' && $filename != '..'){ //若文件为目录,则递归调用函数if(is_dir($basePath . $relativePath. '/' . $filename)){ $this->zipFolder($basePath, $relativePath. '/' . $filename, $zip);}else{$zip->addFile($basePath . $relativePath. '/' .$filename, $relativePath. '/' . $filename);  }  }}closedir($handler);}

过滤指定文件

若要过滤指定文件夹则移除该目录;若需过滤某一文件夹下的部分文件,则在将文件加入压缩文件时,判断其上级目录是否为该文件目录名,再判断是否为需要过滤的文件名。

        $zip = new \ZipArchive();$filename = 'xxx.zip';//压缩文件名,自己命名if($zip->open($filename, \ZIPARCHIVE::CREATE)!==TRUE){exit('cannot open ' . $filename .'\n');}$this->zipFolder('D:/','xxx', $zip); //被压缩文件路径 例子压缩路径为:D:/xxx$zip->close();//压缩整个文件夹以及过滤public function zipFolder($basePath,$relativePath,$zip){$handler = opendir($basePath.$relativePath);  //打开当前文件夹while(($filename = readdir($handler))!==false){ //readdir() 函数返回目录中下一个文件的文件名if($filename!='.' && $filename!='..' && $filename!='目录名'){ //移除指定的目录if(is_dir($basePath . $relativePath . '/' . $filename)){ //若文件为目录,则递归调用函数$this->zipFolder($basePath, $relativePath . '/' .$filename, $zip);}else{if($relativePath == 'yyy'){ //过滤D:/xxx/yyy目录下的a.php,b.php文件if(!in_array($filename,['a.php','b.php'])){$zip->addFile($basePath . $relativePath . '/' . $filename, $relativePath . '/' . $filename); // 加入压缩文件 }}else{$zip->addFile($basePath . $relativePath . '/' . $filename, $relativePath . '/' . $filename);  }  }  }}closedir($handler);}

参考

PHP中的ZIP压缩与解压

PHP中使用ZipArchive扩展压缩整个文件夹和过滤指定文件相关推荐

  1. C#中拷贝指定文件夹下的所有文件夹目录到指定文件夹中的方法

    原文地址:http://www.biye5u.com/article/Csharp/fileprog/2011/4198.html 本文给出了一个在C#中拷贝指定文件夹下的所有文件夹目录到指定文件夹中 ...

  2. mysql xp cmdshell_LOAD语句:利用MSSQL中的xp_cmdshell功能,将指定文件夹下的指定文件,生成mysql的LOAD语句...

    LOAD语句:利用MSSQL中的xp_cmdshell功能,将指定文件夹下的指定文件,生成mysql的LOAD语句 LOAD语句:利用MSSQL中的xp_cmdshell功能,将指定文件夹下的指定文件 ...

  3. python查找文件夹中的指定文件_python 递归搜索文件夹下的指定文件

    python 递归搜索文件夹下的指定文件 import os def look_in_directory(directory): """Loop through the ...

  4. SpringBoot 项目将文件图片资源上传到本地静态资源文件夹下(指定文件夹下)

    1.SpringBoot 项目将文件图片资源上传到本地静态资源文件夹下(指定文件夹下) 最终效果: 前端浏览本地文件,点击上传至本地resources/static/images/imgWall下 2 ...

  5. python保存文件到指定文件夹_python实现指定文件夹下的指定文件移动到指定位置...

    本文主要是写了一个将指定文件夹下的指定文件类型移动到指定位置,具体内容如下 # coding:utf-8 import os import shutil import sys reload(sys) ...

  6. 手机ftp服务器进入制定文件夹,ftp服务器 指定文件夹

    ftp服务器 指定文件夹 内容精选 换一换 本节介绍使用Data Studio时要遵循的安装和配置步骤,以及配置服务器以调试PL/SQL函数的步骤.本章包含如下几节内容:安装Data Studio配置 ...

  7. python下载文件到指定文件夹-python实现指定文件夹下的指定文件移动到指定位置...

    # coding:utf-8 import os import shutil import sys reload(sys) sys.setdefaultencoding('utf8') # print ...

  8. python指定文件路径_python实现指定文件夹下的指定文件移动到指定位置

    # coding:utf-8 import os import shutil import sys reload(sys) sys.setdefaultencoding('utf8') # print ...

  9. python下载文件到指定文件夹-Python 获取指定文件夹下的目录和文件的实现

    经常有需要扫描目录,对文件做批量处理的需求,所以对目录处理这块做了下学习和总结.Python 中扫描目录有两种方法:os.listdir 和 os.walk. 一.os.listdir 方法 os.l ...

最新文章

  1. linux安装mysql php_Linux 安装mysql和php
  2. 求职必备技能:教你如何扒了公司的底裤!
  3. Spring中Controller层、Filter层、Interceptor层全局统一异常处理
  4. 计算机位运算:左移乘以2,右移除以2
  5. PHP内核探索之变量(1)Zval(自己看过不错儿)
  6. mousedown(function(){ return false; })作用
  7. NET问答: 是否有通用的方法判断一个 Type 是 Number ?
  8. uva 247(floyd传递闭包)
  9. php if a 3 b 5,$a=0; $b=0; if($a=3 || $b=3){ $a++; $b++;} echo $a.”,”.$b;为什么结果是1,1啊...
  10. Mtlab 二次规划及其例子
  11. 画图工具的认识及应用计算机,认知画图软件教学设计
  12. DC/DC浪涌电流简记
  13. 电线的粗细与电流的大小怎么算?电流的大小与电器的功率有什么关系? 如何根据电流的大小选择铜质电线的粗细...
  14. 阿里云服务器怎么开发票?
  15. CST设计接收贴片天线
  16. Microsoft Web Farm Framework (WFF) 2.0 入门系列之一:WFF 介绍
  17. Chip类控件(Chip、InputChip、ChoiceChip、FilterChip、ActionChip)
  18. [牛客算法总结]:青蛙跳台阶
  19. 28.EOS的共识机制与区块生成
  20. 苹果6s能安装通讯测试软件么,iOS 13在iPhone 6S和SE上运行情况如何

热门文章

  1. 【大话算法导论】从SAT规约到3SAT
  2. 工时、工期、执行时间计算方式
  3. 10分钟设置免费远程桌面
  4. matlab模拟角度调制系统的仿真与设计,基于Matlab的模拟通信系统的仿真设计
  5. 前端性能优化学习 08 资源加载优化
  6. plc c语言做报警,基于PLC编程报警功能块的实现
  7. 大数据项目之电商数据仓库系统回顾
  8. 使用iText动态生成pdf,并用pdf.js在线预览
  9. Linux系统下,绑定USB串口设备号,解决上电USBID随机情况
  10. 一些生活中简单可用的技能--十分钟学会,终生受益