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 相关文章推荐
我的论坛源代码(八)
Oct 09 PHP
MySQL中create table语句的基本语法是
Jan 15 PHP
php通过文件头检测文件类型通用代码类(zip,rar等)
Oct 19 PHP
PHP无限分类(树形类)的深入分析
Jun 02 PHP
json的键名为数字时的调用方式(示例代码)
Nov 15 PHP
将CMYK颜色值和RGB颜色相互转换的PHP代码
Jul 28 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
Jul 30 PHP
PHP curl 抓取AJAX异步内容示例
Sep 09 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
Dec 01 PHP
Yii2中使用asset压缩js,css文件的方法
Nov 24 PHP
PHP中关键字interface和implements详解
Jun 14 PHP
PhpStorm本地断点调试的方法步骤
May 21 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
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
2014/11/04 PHP
详解使用php调用微信接口上传永久素材
2017/04/11 PHP
Z-Blog中用到的js代码
2007/03/15 Javascript
javascript 通用简单的table选项卡实现
2010/05/07 Javascript
js 创建书签小工具之理论
2011/02/25 Javascript
动态加载js和css(外部文件)
2013/04/17 Javascript
js如何获取file控件的完整路径具体实现代码
2013/05/15 Javascript
[原创]推荐10款最热门jQuery UI框架
2014/08/19 Javascript
jQuery滚动条插件nanoscroller使用指南
2015/04/21 Javascript
浅谈javascript中return语句
2015/07/15 Javascript
JS实现跟随鼠标的链接文字提示框效果
2015/08/06 Javascript
JS+CSS实现自适应选项卡宽度的圆角滑动门效果
2015/09/15 Javascript
vue项目中用cdn优化的方法
2018/01/03 Javascript
javascript数组元素删除方法delete和splice解析
2019/12/09 Javascript
[47:06]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第一局
2016/03/05 DOTA
[47:12]TFT vs Secret Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
mysql 之通过配置文件链接数据库
2017/08/12 Python
解决Python中list里的中文输出到html模板里的问题
2018/12/17 Python
解决Pycharm界面的子窗口不见了的问题
2019/01/17 Python
python 通过类中一个方法获取另一个方法变量的实例
2019/01/22 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
2019/06/20 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
世界最大的票务市场:viagogo
2017/02/16 全球购物
荷兰包包购物网站:The Little Green Bag
2018/03/17 全球购物
北美Newegg打造的全球尖货海购平台:tt海购
2018/09/28 全球购物
如何将整数int转换成字串String
2014/03/21 面试题
2014年三八妇女节活动总结
2014/03/01 职场文书
护理专业毕业生自我鉴定总结
2014/03/24 职场文书
我读书我快乐演讲稿
2014/05/07 职场文书
食品工程专业求职信
2014/06/15 职场文书
共产党员批评与自我批评
2014/10/15 职场文书
冰峪沟导游词
2015/02/09 职场文书
农村党支部承诺书
2015/04/30 职场文书
办公室卫生管理制度
2015/08/04 职场文书
公司车辆维修管理制度
2015/08/05 职场文书
MySQL系列之三 基础篇
2021/07/02 MySQL