PHP/ThinkPHP实现批量打包下载文件的方法示例


Posted in PHP onJuly 31, 2017

前言

本文主要给大家介绍的是关于PHP/ThinkPHP实现批量打包下载文件的相关内容,分享出来供大家参考学习,话不多说了,来一起看看详细的介绍:

需求描述:

有数个文件,包含图片,文档。需要根据条件自动打包成压缩包,提供下载。

解决(ZipArchive 类):

PHP提供了ZipArchive 类可为我们实现这一功能,demo:

<?php
 
$files = array('image.jpeg','text.txt','music.wav');
$zipname = 'enter_any_name_for_the_zipped_file.zip';
$zip = new ZipArchive;
$zip->open($zipname, ZipArchive::CREATE);
foreach ($files as $file) {
 $zip->addFile($file);
}
$zip->close();
 
///Then download the zipped file.
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zipname);
header('Content-Length: ' . filesize($zipname));
readfile($zipname);
 
?>

ThinkPHP版

$zip = new \ZipArchive;
//压缩文件名
$filename = 'download.zip';
//新建zip压缩包
$zip->open($filename,\ZipArchive::OVERWRITE);
//把图片一张一张加进去压缩
foreach ($images as $key => $value) {
 $zip->addFile($value);
}
//打包zip
$zip->close();
 
//可以直接重定向下载
header('Location:'.$filename);
 
//或者输出下载
header("Cache-Control: public"); 
header("Content-Description: File Transfer"); 
header('Content-disposition: attachment; filename='.basename($filename)); //文件名 
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: binary");
header('Content-Length: '. filesize($filename)); //告诉浏览器,文件大小 
readfile($filename);

区别在引用的时候路径要对,结束。

相关参考:

http://www.php.net/manual/zh/class.ziparchive.php

http://dengrongguan12.github.io/blog/2016/php-ziparchive/

总结

好了,大概就这样,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持

PHP 相关文章推荐
PHP怎样调用MSSQL的存储过程
Oct 09 PHP
PHP下用rmdir实现删除目录的三种方法小结
Apr 20 PHP
PHP设计模式 注册表模式
Feb 05 PHP
使用php判断浏览器的类型和语言的函数代码
Feb 28 PHP
php获取新浪微博数据API实例
Nov 12 PHP
php使用json_encode对变量json编码
Apr 07 PHP
一组PHP加密解密函数分享
Jun 05 PHP
php比较相似字符串的方法
Jun 05 PHP
在PHP中使用FastCGI解析漏洞及修复方案
Nov 10 PHP
php抽奖概率算法(刮刮卡,大转盘)
Apr 17 PHP
PHP实现的获取文件mimes类型工具类示例
Apr 08 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
Aug 03 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
Jul 31 #PHP
php实现将二维关联数组转换成字符串的方法详解
Jul 31 #PHP
微信接口生成带参数的二维码
Jul 31 #PHP
PHP判断一个数组是另一个数组子集的方法详解
Jul 31 #PHP
PHP中TP5 上传文件的实例详解
Jul 31 #PHP
PHP 中TP5 Request 请求对象的实例详解
Jul 31 #PHP
PHP将数据导出Excel表中的实例(投机型)
Jul 31 #PHP
You might like
PHP 字符截取 解决中文的截取问题,不用mb系列
2009/09/29 PHP
thinkphp 一个页面使用2次分页的实现方法
2013/07/15 PHP
Laravel 5 学习笔记
2015/03/06 PHP
Yii2框架类自动加载机制实例分析
2018/05/02 PHP
PHP实现对数字分隔加千分号的方法
2019/03/18 PHP
PHP的垃圾回收机制代码实例讲解
2021/02/27 PHP
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
jQuery 判断页面元素是否存在的代码
2009/08/14 Javascript
IE 条件注释详解总结(附实例代码)
2009/08/29 Javascript
PageSwitch插件实现100种不同图片切换效果
2015/07/28 Javascript
js实现索引图片切换效果
2015/11/21 Javascript
jquery实现全选功能效果的实现代码
2016/05/05 Javascript
AngularJS 基础ng-class-even指令用法
2016/08/01 Javascript
原生js实现对Ajax的封装(仿jquery)
2017/01/22 Javascript
Vue非父子组件通信详解
2017/06/12 Javascript
jQuery实现的简单对话框拖动功能示例
2018/06/05 jQuery
在vue项目中,将juery设置为全局变量的方法
2018/09/25 Javascript
在vue项目中优雅的使用SVG的方法实例详解
2018/12/03 Javascript
vue开发环境配置跨域的方法步骤
2019/01/16 Javascript
简单了解JavaScript中的执行上下文和堆栈
2019/06/24 Javascript
[03:26]回顾2015国际邀请赛中国区预选赛
2015/06/09 DOTA
python基本语法练习实例
2017/09/19 Python
Python程序运行原理图文解析
2018/02/10 Python
Python过滤txt文件内重复内容的方法
2018/10/21 Python
python手写均值滤波
2020/02/19 Python
在python中求分布函数相关的包实例
2020/04/15 Python
Python私有属性私有方法应用实例解析
2020/09/15 Python
美国球鞋寄卖网站:Stadium Goods
2018/05/09 全球购物
The Outnet亚太地区:折扣设计师时装店
2019/12/05 全球购物
Stio官网:男女、儿童户外服装
2019/12/13 全球购物
荣耀商城:HIHONOR
2020/11/03 全球购物
黄金搭档广告词
2014/03/21 职场文书
学前班评语大全
2014/05/04 职场文书
药品营销策划方案
2014/06/15 职场文书
2020年个人安全保证书参考模板
2020/01/08 职场文书
python实现ROA算子边缘检测算法
2021/04/05 Python