一、应用场景

在项目中,大家肯定都见过php导出功能,比如导出成csv格式、excel格式,这些是很常见的,而我前面也有记录过导出成csv的方式,php 生成csv文件, 但是想要下载指定的文件夹呐??

现在想下载这个wx_media目录下的三个目录,怎么处理呐???

二、解决之法

首先想到了快速的方法1:使用laravel扩展;
可是调研发现,先不说能否实现,关键是这个扩展要求laravel版本高于5,pass

为了一劳永逸,我干脆采用PHP的扩展得了,直接使用PHP5.2以来就具有的Ziparchive类。如果使用请确保php.ini开启了ext-zip扩展

三、实现
1.首先,你肯定要开启这个PHP扩展的呀,
2.

public function getZipper(){$zip = new \ZipArchive();// 图片路径$img_path = public_path('/upload/wx_media/image');// MP3路径$mp3_path = public_path('upload/wx_media/mp3');$img_files = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($img_path));$mp3_files = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($mp3_path));$zip_file = $this->zip_file;$zip->open($zip_file, \ZipArchive::CREATE | \ZipArchive::OVERWRITE);$this->forZip($zip, $img_files, $img_path, 'image/');$this->forZip($zip, $mp3_files, $mp3_path, 'mp3/');$zip->close();return Redirect::to($zip_file);}

下面是打包的过程

public function forZip($zip, $files, $file_path, $new_path){foreach ($files as $name => $file) {// 我们要跳过所有子目录if ( ! $file->isDir()) {$filePath = $file->getRealPath();// 用 substr/strlen 获取文件扩展名$relativePath = $new_path . substr($filePath, strlen($file_path) + 1);$zip->addFile($filePath, $relativePath);}}}

这样就会下载一个压缩包,而压缩包的地址则是存放在你指定的$zip_file地址中,其实就是打包了你指定的目录下的目录然后放在了一个定好的zip文件里面,最后在访问下载这个zip文件路径就下载了

Ziparchive,实现打包并且下载目录相关推荐

  1. 文件打包,下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件

    总结:                                                          使用PHP下载文件的操作需要给出四个header(),可以参考我的另一篇博文: ...

  2. 【热门收藏】iOS开发人员必看的精品资料(100个)——下载目录

    [热门收藏]iOS开发人员必看的精品资料(100个)--下载目录 iPhone.iPad产品风靡全球,巨大的用户群刺激着iOS软件开发需求,然而国内人才缺口很大,正处于供不应求的状态,ios开发前景大 ...

  3. 【珍藏】 2012.NET开发必看资料53个+经典源码77个—下载目录

    2019独角兽企业重金招聘Python工程师标准>>> .NET 是 Microsoft XML Web services 平台.XML Web services 允许应用程序通过I ...

  4. python远程同步文件_Python实现的远程文件自动打包并下载功能示例

    Python实现的远程文件自动打包并下载功能示例 发布时间:2020-08-19 23:32:33 来源:脚本之家 阅读:103 本文实例讲述了Python实现的远程文件自动打包并下载功能.分享给大家 ...

  5. 通过url地址批量打包zip下载文件

    通过url地址批量打包zip下载文件 controller @ApiOperation("通过下载url批量打包zip下载")@PostMapping("batchDow ...

  6. 80个Python经典资料(教程+源码+工具)汇总——下载目录

    2019独角兽企业重金招聘Python工程师标准>>> 大家好,51CTO下载中心根据资料的热度和好评度收集了80个Python资料,分享给Python开发的同学.内容包括1个Pyt ...

  7. 群晖NAS百度云Docker客户端下载目录没有权限的问题解决

    群晖NAS百度云Docker客户端下载目录没有权限的问题解决 参考文章: (1)群晖NAS百度云Docker客户端下载目录没有权限的问题解决 (2)https://www.cnblogs.com/ea ...

  8. Asp.Net Web Api 2 实现多文件打包并下载文件示例源码

    前言 最近由于工作和个人事务,站点也好久没更新了,但这并不影响我对.NET的热情.站点的更新工作还是得想办法抽时间来完成的. 提要 今天利用中午的时间来写一篇关于Asp.Net Web Api下载文件 ...

  9. 【JAVA资料免费下载】158个JAVA免豆精品资料汇总——下载目录(转载)

    [JAVA资料免费下载]158个JAVA免豆精品资料汇总--下载目录(转载) 应广大网友要求,最近小弟整理了一批免积分下载的Java优质资料,因资料众多,一一将资料上传上来需要时间,先将下载目录分享给 ...

最新文章

  1. 如何在域控制器上安装asp.net?
  2. 龙格-库塔(Runge-Kutta)方法数学原理及实现
  3. 如何解决ipconfig、ping不是内部或外部命令
  4. Surging1.0发布在即,.NET开发者们,你们还在等什么?
  5. android 关于提高第三方app的service优先级
  6. Linux服务器查看日志方法小结
  7. JetBrains在CLion的Linux和OS X版本中引入Swift支持
  8. 使用cordova,使html5也能像IOS,Android那样可以 调取手机的相机拍照功能
  9. Biopython -- SeqRecord
  10. ansys18安装以后打不开_ansys18.0安装过程及常见问题解决方案【图文】
  11. 2021年Robocom 复赛题解
  12. cad断点快捷键_CAD打断(BREAK)命令的使用技巧
  13. 小巧舒适佩戴稳定蓝牙耳机推荐,2020双11高性价比蓝牙耳机,机不可失
  14. 修改战网服务器,使命召唤16现代战争怎么改战网地区_修改战网客户端的方法_3DM单机...
  15. Java Z 字形变换
  16. python实现繁简体自动转换小工具
  17. 百人会20年华盛顿之行随感
  18. [hive]hive加载本地数据,然后删除了本地数据也删除了表,这时可以在hdfs垃圾箱找到
  19. FBAlpha编译和裁剪笔记
  20. Miss HSTS header in checkmarx

热门文章

  1. 电脑数据恢复用哪款软件比较好
  2. 中国维生素E护发素行业市场供需与战略研究报告
  3. 郎凤娥陪同界首市领导参观高新区蓝天集中供热项目
  4. VISTA下载全集(上)
  5. windows10+Ubuntu20.04双系统安装——以雷神新911为例
  6. c语言 人事工资管理系统,c语言人事工资的管理系统源程序.doc
  7. eCos消息机制学习
  8. 腾讯应用研究-机器学习一面
  9. java反射基础学习
  10. 蚂蚁国际2023届实习生招聘内推