/*

* 压缩文件

* */

function zip($files){

$zipName = 'download.zip';

$zip = new \ZipArchive;//使用本类,linux需开启zlib,windows需取消php_zip.dll前的注释

/*

* 通过ZipArchive的对象处理zip文件

* $zip->open这个方法如果对zip文件对象操作成功,$zip->open这个方法会返回TRUE

* $zip->open这个方法第一个参数表示处理的zip文件名。

* 这里重点说下第二个参数,它表示处理模式

* ZipArchive::OVERWRITE 总是以一个新的压缩包开始,此模式下如果已经存在则会被覆盖。

* ZIPARCHIVE::CREATE 如果不存在则创建一个zip压缩包,若存在系统就会往原来的zip文件里添加内容。

*

* 这里不得不说一个大坑。

* 我的应用场景是需要每次都是创建一个新的压缩包,如果之前存在,则直接覆盖,不要追加

* so,根据官方文档和参考其他代码,$zip->open的第二个参数我应该用 ZipArchive::OVERWRITE

* 问题来了,当这个压缩包不存在的时候,会报错:ZipArchive::addFile(): Invalid or uninitialized Zip object

* 也就是说,通过我的测试发现,ZipArchive::OVERWRITE 不会新建,只有当前存在这个压缩包的时候,它才有效

* 所以我的解决方案是 $zip->open($zipName, \ZIPARCHIVE::OVERWRITE | \ZIPARCHIVE::CREATE)

*

* 以上总结基于我当前的运行环境来说

* */

if ($zip->open($zipName, \ZIPARCHIVE::OVERWRITE | \ZIPARCHIVE::CREATE)!==TRUE) {

exit('无法打开文件,或者文件创建失败');

}

foreach($files as $val){

//$attachfile = $attachmentDir . $val['filepath']; //获取原始文件路径

if(file_exists($val)){

//addFile函数首个参数如果带有路径,则压缩的文件里包含的是带有路径的文件压缩

//若不希望带有路径,则需要该函数的第二个参数

$zip->addFile($val, basename($val));//第二个参数是放在压缩包中的文件名称,如果文件可能会有重复,就需要注意一下

}

}

$zip->close();//关闭

if(!file_exists($zipName)){

exit("无法找到文件"); //即使创建,仍有可能失败

}

return '打包成功';

}

/*

* 获取文件的路径及名称

* */

function traverse($path)

{

global $filePath;//得到外部定义的数组

$current_dir = opendir($path); //opendir()返回一个目录句柄,失败返回false

while (($file = readdir($current_dir)) !== false) { //readdir()返回打开目录句柄中的一个条目

$sub_dir = $path . DIRECTORY_SEPARATOR . $file; //构建子目录路径

if ($file == '.' || $file == '..') {

continue;

} else if (is_dir($sub_dir)) { //如果是目录,进行递归

traverse($sub_dir); //嵌套遍历子文件夹

} else { //如果是文件,直接输出路径和文件名

$filePath[$path . '/' . $file] = $path . '/' . $file;//把文件路径赋值给数组

}

}

return $filePath;

}

php 复制文件夹并压缩到最小_php获取所有文件并压缩相关推荐

  1. php 复制文件夹并压缩到最小_php实现对文件压缩简单的方法

    压缩一个文件 我们将一个文件生成一个压缩包. $path = "c:/wamp/www/log.txt"; $filename = "test.zip"; $z ...

  2. php 复制文件夹并压缩到最小_php与语音识别功能如何对接

    语音识别的功能的应用场景 将语音实时识别为文字,适用于语音聊天.语音输入.语音搜索.语音下单.语音指令.语音问答等多种场景. 我们还是利用百度API,语音识别功能,给大家讲解如何使用.API主要就是要 ...

  3. php 复制文件夹并压缩到最小_PHP压缩文件夹的方法

    PHP压缩文件夹的方法 public function addFileToZip($path, $zip) { $handler = opendir($path); //打开当前文件夹由$path指定 ...

  4. php 复制文件夹并压缩到最小_php将文件夹打包成zip文件

    function addFileToZip($path,$zip){ $handler=opendir($path); //打开当前文件夹由$path指定. while(($filename=read ...

  5. php 复制文件夹并压缩到最小_php在线压缩并下载压缩文件的方法

    /* *下载类,zip压缩文件下载 */ class download{ protected $_filename; protected $_filepath; protected $_filesiz ...

  6. php 复制文件夹并压缩到最小_php压缩多个文件打包成zip并下载到本地

    完成时间:2018-01-03 展现方式:整个相册图片的导出(下载到本地)直接在页面上生成下载没有什么另存为什么默认路径 基本步骤: 1.用户点击按钮跳转到对应相册导出的方法 ---->2.在方 ...

  7. win7压缩文件夹怎么压缩到最小

    在我们日常使用win7系统的过程中,压缩文件作为经常使用的东西相信很多小伙伴都对它不陌生,由于其占用空间小,所以网站下载的文件大多都是压缩包格式.很多时候我们和朋友分享文件也以压缩包的形式传输.接下来 ...

  8. php 复制文件夹并压缩到最小_【实用】PHP实现下载与压缩文件的一些方法的封装与整理...

    [实用]PHP实现下载与压缩文件的一些方法的封装与整理 龙行    PHP    2019-3-11    1590    1评论 一.PHP实现打包zip并下载功能 $file_template = ...

  9. Python 获取当前文件夹所有文件名并写入到excel文件中

    在工作中,有时候,我们需要整理文件夹中的所有文件名称,并罗列在一张表格中.天哪,我的文件夹中有上千个文件,要一个个的复制粘贴吗?太麻烦了吧?今天,我们用Python来解决这个问题. 1. 使用方法: ...

最新文章

  1. java中关于时间的计算
  2. 安装虚拟机及Linux常用操作命令
  3. js条件语句初步练习
  4. Xcode的Architectures和Valid Architectures的区别
  5. python实例变量命名规则_Java,Python的一些命名规范
  6. vsftp 使用虚拟用户
  7. 学计算机不管干哪行,语言是必备的基本素质(认真学习C++)
  8. 基于FPGA的CIC滤波器设计(1)
  9. HTTP协议中URI和URL的区别
  10. vs2010的Visual Assist X破解版安装
  11. python语言的多行注释以什么开头和结尾_python多行注释
  12. 第四天作业发布时间:2021-05-31 09:57:49相关课程:RHCSA2021-05-22 
  13. RW文档翻译学习——RW-BT-SW-COMMON-FS
  14. Microcontent - 微内容
  15. 共模电感(扼流圈) 差模电感(扼流圈)
  16. 《算法导论(原书第3版)》pdf
  17. [渝粤教育] 西南科技大学 预算会计 在线考试复习资料2021版(1)
  18. 【离散数学】 SDUT OJ 偏序关系
  19. UTF-8 and Unicode FAQ
  20. 计算机可视化视景仿真,计算与仿真、三维设计、图像处理、视景仿真、4k视频剪辑工作站介绍2015版.pptx...

热门文章

  1. Tekton系列之实践篇-我的第一条Pipeline
  2. YoLo卷积神经网络各层计算,卷积层计算输入的图片大小是448*448*3输出224*224*64原因?
  3. 用计算机画有常数的函数图像,信息技术应用 用计算机画函数图象教学实录及点评...
  4. C#编程_实现简易的任务管理器
  5. C语言小项目--贪吃蛇游戏
  6. HRNet语义分割训练及TensorRT部署
  7. Type-infity Wasserstein Ball
  8. npy文件的打开,读取
  9. 花花世界的flowers in December
  10. win10笔记本触摸板点击没反应