thinkphp5中自带了ZipArchive,我们可以直接调用打包文件;
第一步: 因为是批量打包文件,所以我们需要传入数据id,我是在页面中使用js方法拼接的id字符串,所以在后台我需要explode将字符串转换为数组才可以,如果你们的方法与我的不一样,可省掉这一部分;
第二步: 循环id,查找要打包的文件路径,并且将所有的文件路径保存在同一个数组中(代码中的$files[]);
第三步: 参数解释:

$filename: 设置压缩文件的名称以及位置,这样我们下载的时候才能下载成功;
array_pop($files): 因为我拼接的ids格式为: 1,2,3,   后面多了一个, 所以我在转换为数组后需要将最后一个,去掉,这里是我根据情况使用的,如果你们没有这种情况,这部分则不需要,如果最后一个的空数组不去掉的话,在打包的时候会报错
public function download_files(){$param = $this->request->param();$ids = explode(',', $param['ids']);//要打包的文件foreach ($ids as $k => $v){$files[] = Db::name('qrcode')->where('id',$v)->value('qrcode');}$zip = new \ZipArchive;//压缩文件名$filename = 'uploads/qrcode/qrcode.zip';//新建zip压缩包$zip->open($filename,\ZIPARCHIVE::OVERWRITE | \ZIPARCHIVE::CREATE);//循环压缩文件array_pop($files);foreach($files as $key => $value){$zip->addFile($value,basename($value));}//打包zip$zip->close();header("Cache-Control:public");header("Content-Description: File Transfer");header("Content-disposition: attachment; filename=".basename($filename));//文件名header("Content-Type:application/zip"); //格式为zipheader("Content-Transfer-Encoding:binary"); //这是二进制文件header("Content-Length:".filesize($filename)); //文件大小@readfile($filename);}

来试试吧!!! 超级简单就可以打包下载了

Thinkphp5使用ZipArchive批量打包下载图片相关推荐

  1. 根据URL下载单个图片与批量打包下载图片(文件同理)

    根据url下载图片看起来很简单,做起来还是有点曲折的 首先,直接file_put_content()的话可以下载图片但不知道图片保存在什么位置,所以必须要调用浏览器下载,使用header头. func ...

  2. 实战:JS批量打包下载图片--(zip压缩)

    1.下载两个插件 npm i -s jszip file-saver 2.封装函数如下: // 在JS文件中引入这两个插件 import JSZip from 'jszip' import FileS ...

  3. 前端批量打包下载图片

    1.批量下载图片(jquery)  <!DOCTYPE html> <html><head><meta charset="utf-8" / ...

  4. 【jQuery】jQuery与vue实现点击下载图片 以及js实现批量打包下载图片

    原理:用canvas的toDataUrl() API获取到图片的base64编码,再利用触发a标签事件进行下载.(单张图片下载) 多张图片批量下载导出压缩包需要引入jsZip jQuery实现点击下载 ...

  5. js批量打包下载图片

                    html文件内容 <!DOCTYPE html> <html lang="en"><head> </hea ...

  6. PHP使用ZipArchive对文件进行批量打包下载

    PHP使用ZipArchive对文件进行批量打包下载 话不多说直接上图 DEMO 代码示例 <?php$file = $_GET['file'];//文件判断,无文件阻止if(!$file){e ...

  7. 阿里云OSS文件批量打包下载

    阿里云OSS文件批量打包下载 public void downloadReport(List<String> fileNames,HttpServletResponse response) ...

  8. JAVA实现文件批量打包下载

    JAVA实现文件批量打包下载 实现 1.打包工具类的实现 /*** @author zhouxuan* @since 2019/4/19*/ public class ZipUtils {/*** @ ...

  9. 打包下载图片(文件)

    1. 打包下载图片(文件) ·ReportFile 实体类 随便你自己怎么写了 ·reportFile.getFilePath() 文件存放路径 /*** @param id*/ @ResponseB ...

  10. java文件下载功能代码(单文件下载、多文件批量打包下载)——普遍适用

    一.前言   程序员在做web等项目的时候,往往都需要添加文件上传.下载.删除的功能,有时是单文件,有时多文件批量 操作,而这些功能的代码程序员可以自己收藏起来当成工具使用,这样,程序员在进行程序设计 ...

最新文章

  1. 陶哲轩实分析 习题 7.5.2
  2. 《从0到1学习Flink》—— Flink 读取 Kafka 数据批量写入到 MySQL
  3. java追加一个sheet_(二)POI-创建一个sheet页,并添加行列数据
  4. Cocos Creator实战教程(5)】——打砖块(物理引擎,碰撞检测)
  5. android jni通过cmake使用第三方静态库和动态库
  6. ros 运行rviz时出现 QXcbConnection: XCB error: 148 错误 解决方法
  7. 实现一个简单的基于码云(Gitee) 的 Storage
  8. 移动web现状、viewport视口、二倍图、移动web开发主流方案、布局技术选型(流式布局、flex弹性布局、less+rem+媒体查询布局、混合布局、媒体查询、bootstrap)
  9. 内建函数(builtins)和functools
  10. 10个人做抖音,8个做不起来,为啥?
  11. WLAN 无线网络 02 - 频率、信道、编码、调制
  12. 智能雷达感应人体存在,照明雷达技术应用,雷达模块技术方案
  13. 宾馆客房管理系统的设计与实现
  14. python爬取 东方财富/天天基金网 基金排行数据
  15. arch模型 python_【时间序列】波动率建模之ARCH模型
  16. 红条款信用证Red Clause L/C
  17. 【流体机械原理及设计03】
  18. 在Android手机上安装Ubuntu完整版
  19. 关于在for循环的switch语句使用break和continue问题
  20. 中国企业实施ERP之难点全攻略

热门文章

  1. python处理FITS文件 2:astropy.io.fits介绍及打开FITS文件
  2. 我们应该如何做外链?
  3. Requests 校花网图片爬取
  4. [USACO07DEC]泥水坑Mud Puddles BFS BZOJ 1627
  5. YYC松鼠视频短信对接教程
  6. 燕山八景之居庸叠翠(内含大图)
  7. 刮刮卡 java代码_Android刮刮卡效果实现代码
  8. 101个CV模型集体开源,魔搭社区视觉AI深度解析
  9. 超过2T硬盘用不了,怎么办?
  10. 记一次云主机如何挂载对象存储