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 正则 过滤html 的超链接
Jun 02 PHP
php顺序查找和二分查找示例
Mar 27 PHP
PHP安全上传图片的方法
Mar 21 PHP
smarty模板引擎之分配数据类型
Mar 30 PHP
PHP+Mysql+jQuery中国地图区域数据统计实例讲解
Oct 10 PHP
自定义min版smarty模板引擎MinSmarty.class.php文件及用法
May 20 PHP
PHP结合Ueditor并修改图片上传路径
Oct 16 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
Nov 25 PHP
使用 laravel sms 构建短信验证码发送校验功能
Nov 06 PHP
PHP实现通过文本文件统计页面访问量功能示例
Feb 13 PHP
Laravel框架集合用法实例浅析
May 14 PHP
php7 list()、session及其他模块的修改实例分析
May 25 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中在数据库中保存Checkbox数据(1)
2006/10/09 PHP
Linux下PHP安装mcrypt扩展模块笔记
2014/09/10 PHP
PHP实现股票趋势图和柱形图
2015/02/07 PHP
Yii2针对指定url的生成及图片等的引入方法小结
2016/07/18 PHP
PHP实现验证码校验功能
2017/11/16 PHP
js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
2011/01/08 Javascript
跟我学Nodejs(二)--- Node.js事件模块
2014/05/21 NodeJs
从数据库读取数据后将其输出成html标签的三种方法
2014/10/13 Javascript
js点击列表文字对应该行显示背景颜色的实现代码
2015/08/05 Javascript
JS实现模拟百度搜索“2012世界末日”网页地震撕裂效果代码
2015/10/31 Javascript
JavaScript实现弹出模态窗体并接受传值的方法
2016/02/12 Javascript
微信小程序图片横向左右滑动案例
2017/05/19 Javascript
详解Angular.js中$http拦截器的介绍及使用
2017/07/04 Javascript
BootStrap下的弹出框加载select2框架失败的解决方法
2017/08/31 Javascript
[01:04:39]OG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python搭建微信公众平台
2016/02/09 Python
总结python实现父类调用两种方法的不同
2017/01/15 Python
python学习之matplotlib绘制散点图实例
2017/12/09 Python
python实现手机通讯录搜索功能
2018/02/22 Python
python3 图片referer防盗链的实现方法
2018/03/12 Python
python暴力解压rar加密文件过程详解
2019/07/05 Python
python列表删除和多重循环退出原理详解
2020/03/26 Python
在jupyter notebook 添加 conda 环境的操作详解
2020/04/10 Python
Django搭建项目实战与避坑细节详解
2020/12/06 Python
白色公司:The White Company
2017/10/11 全球购物
GoDaddy英国:全球排名第一的域名注册商
2018/06/08 全球购物
Lucene推荐的分页方式是什么?
2015/12/07 面试题
十佳青年个人事迹材料
2014/01/28 职场文书
2014植树节活动总结
2014/03/11 职场文书
社区安全生产月活动总结
2014/07/05 职场文书
工程质检员岗位职责
2015/04/08 职场文书
校园环境卫生倡议书
2015/04/29 职场文书
纪检部部长竞选稿
2015/11/21 职场文书
2016年秋季运动会广播稿
2015/12/21 职场文书
民警忠诚教育心得体会
2016/01/23 职场文书
JavaScript文档对象模型DOM
2021/11/20 Javascript