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 相关文章推荐
BBS(php &amp; mysql)完整版(六)
Oct 09 PHP
php下实现农历日历的代码
Mar 07 PHP
php split汉字
Jun 05 PHP
使用bcompiler对PHP文件进行加密的代码
Aug 29 PHP
php写的简易聊天室代码
Jun 04 PHP
php安全配置 如何配置使其更安全
Dec 16 PHP
php分页思路以及在ZF中的使用
May 30 PHP
ubuntu下编译安装xcache for php5.3 的具体操作步骤
Jun 18 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
Sep 29 PHP
PHP实现操作redis的封装类完整实例
Nov 14 PHP
PHP实现基于mysqli的Model基类完整实例
Apr 08 PHP
Laravel框架中集成MongoDB和使用详解
Oct 17 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
mayfish 数据入库验证代码
2010/04/30 PHP
php超快高效率统计大文件行数
2015/07/05 PHP
PHP的压缩函数实现:gzencode、gzdeflate和gzcompress的区别
2016/01/27 PHP
Laravel框架Auth用户认证操作实例分析
2019/09/29 PHP
两个select之间option的互相添加操作(jquery实现)
2009/11/12 Javascript
详解js闭包
2014/09/02 Javascript
常常会用到的截取字符串substr()、substring()、slice()方法详解
2015/12/16 Javascript
js style.display=block显示布局错乱问题的解决方法
2016/09/21 Javascript
Jquery表单验证失败后不提交的解决方法
2016/10/18 Javascript
Bootstrap按钮功能之查询按钮和重置按钮
2016/10/26 Javascript
JavaScript严格模式下关于this的几种指向详解
2017/07/12 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
2017/07/28 Javascript
浅谈sass在vue注意的地方
2017/08/10 Javascript
基于vue.js路由参数的实例讲解——简单易懂
2017/09/07 Javascript
JS数组去重常用方法实例小结【4种方法】
2018/05/28 Javascript
Node.js 使用request模块下载文件的实例
2018/09/05 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
2018/09/18 Javascript
JS中比Switch...Case更优雅的多条件判断写法
2019/09/05 Javascript
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
2018/01/10 Python
python list元素为tuple时的排序方法
2018/04/18 Python
tensorflow: variable的值与variable.read_value()的值区别详解
2018/07/30 Python
对pycharm 修改程序运行所需内存详解
2018/12/03 Python
python 判断字符串中是否含有汉字或非汉字的实例
2019/07/15 Python
Python OpenCV图像指定区域裁剪的实现
2019/10/30 Python
python中前缀运算符 *和 **的用法示例详解
2020/05/28 Python
python爬虫使用正则爬取网站的实现
2020/08/03 Python
Bealls Florida百货商店:生活服饰、家居装饰和鞋子
2018/02/23 全球购物
澳大利亚儿童精品仓库:Goo & Co.
2019/06/20 全球购物
Python的两道面试题
2013/06/29 面试题
实习评语
2013/12/16 职场文书
大学生个人先进事迹材料范文
2014/05/03 职场文书
岗位工作说明书
2014/07/29 职场文书
机关党员四风问题个人整改措施
2014/10/26 职场文书
父亲节寄语大全
2015/02/27 职场文书
一年级下册数学教学反思
2016/02/16 职场文书
2019大学生暑期实习心得总结
2019/08/21 职场文书