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版
Oct 09 PHP
PHP4实际应用经验篇(4)
Oct 09 PHP
Mysql中limit的用法方法详解与注意事项
Apr 19 PHP
提高PHP编程效率 引入缓存机制提升性能
Feb 15 PHP
php用header函数实现301跳转代码实例
Nov 25 PHP
百度地图API应用之获取用户的具体位置
Jun 10 PHP
php+mysql结合Ajax实现点赞功能完整实例
Jan 30 PHP
php项目中百度 UEditor 简单安装调试和调用
Jul 15 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
Jan 08 PHP
CentOS系统中PHP安装扩展的方式汇总
Apr 09 PHP
PHP简单计算两个时间差的方法示例
Jun 20 PHP
Yii框架 session 数据库存储操作方法示例
Nov 18 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
日本十大最佳动漫,全都是二次元的神级作品
2019/10/05 日漫
PHP通过header实现文本文件下载的代码
2010/08/08 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
表单内同名元素的控制
2006/11/22 Javascript
javascript 放大镜效果js组件 qsoft.PopBigImage.v0.35 加入了chrome支持
2009/04/07 Javascript
jBox 2.3基于jquery的最新多功能对话框插件 常见使用问题解答
2011/11/10 Javascript
jquery插件制作 表单验证实现代码
2012/08/17 Javascript
js 判断上传文件大小及格式代码
2013/11/13 Javascript
Javascript排序算法之合并排序(归并排序)的2个例子
2014/04/04 Javascript
jQuery实现仿新浪微博浮动的消息提示框(可智能定位)
2015/10/10 Javascript
js实现选中页面文字将其分享到新浪微博
2015/11/05 Javascript
AngularJS操作键值对象类似java的hashmap(填坑小结)
2016/11/12 Javascript
jQuery实现返回顶部按钮和scroll滚动功能[带动画效果]
2017/07/05 jQuery
详解刷新页面vuex数据不消失和不跳转页面的解决
2018/01/30 Javascript
基于Vue中点击组件外关闭组件的实现方法
2018/03/06 Javascript
微信小程序实现录音时的麦克风动画效果实例
2019/05/18 Javascript
JavaScript数组及常见操作方法小结
2019/11/13 Javascript
js实现mp3录音通过websocket实时传送+简易波形图效果
2020/06/12 Javascript
js实现滑动进度条效果
2020/08/21 Javascript
[05:17]DOTA2睡衣妹卖萌求签名 CJ第二天全明星影像
2013/07/28 DOTA
python获取从命令行输入数字的方法
2015/04/29 Python
深入浅析Python字符编码
2015/11/12 Python
python 写的一个爬虫程序源码
2016/02/28 Python
python下调用pytesseract识别某网站验证码的实现方法
2016/06/06 Python
Django实现分页功能
2018/07/02 Python
Python turtle画图库&amp;&amp;画姓名实例
2020/01/19 Python
python如何获得list或numpy数组中最大元素对应的索引
2020/11/16 Python
CSS3制作炫酷带方向感应的鼠标滑过图片3D动画
2016/03/16 HTML / CSS
出纳岗位职责范本
2013/12/01 职场文书
实习评语
2013/12/16 职场文书
会计与审计专业自荐信范文
2014/03/15 职场文书
努力学习演讲稿
2014/05/10 职场文书
安全生产培训心得体会
2016/01/18 职场文书
2016年优秀团员事迹材料
2016/02/25 职场文书
tomcat的catalina.out日志按自定义时间格式进行分割的操作方法
2022/04/02 Servers
鸿蒙3.0体验感怎么样? 鸿蒙3.0系统评测向
2022/08/14 数码科技