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 相关文章推荐
在apache下限制每个虚拟主机的并发数!!!!
Oct 09 PHP
PHP array 的加法操作代码
Jul 24 PHP
2014年10个最佳的PHP图像操作库
Jul 14 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
Jul 25 PHP
PHP使用glob函数遍历目录或文件夹的方法
Dec 16 PHP
php实现分页显示
Nov 03 PHP
PHP实现JS中escape与unescape的方法
Jul 11 PHP
thinkphp配置文件路径的实现方法
Aug 30 PHP
php封装的page分页类完整实例
Oct 18 PHP
PHP 搜索查询功能实现
Nov 29 PHP
探究Laravel使用env函数读取环境变量为null的问题
Dec 06 PHP
php使用QueryList轻松采集js动态渲染页面方法
Sep 11 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持久连接mysql_pconnect()函数使用介绍
2012/02/05 PHP
ThinkPHP3.2.1图片验证码实现方法
2016/08/19 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
2016/10/25 PHP
PHP 中常量的知识整理
2017/04/14 PHP
Javascript中的数学函数集合
2007/05/08 Javascript
jQuery 翻牌或百叶窗效果(内容三秒自动切换)
2012/06/14 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
前端把html表格生成为excel表格的实例
2017/09/19 Javascript
vue项目中导入swiper插件的方法
2018/01/30 Javascript
react-native android状态栏的实现
2018/06/15 Javascript
vue 实现边输入边搜索功能的实例讲解
2018/09/16 Javascript
手淘flexible.js框架使用和源代码讲解小结
2018/10/15 Javascript
JavaScript数组、json对象、eval()函数用法实例分析
2019/02/21 Javascript
vue 实现tab切换保持数据状态
2020/07/21 Javascript
JS removeAttribute()方法实现删除元素的某个属性
2021/01/11 Javascript
python提取图像的名字*.jpg到txt文本的方法
2018/05/10 Python
python实现电脑自动关机
2018/06/20 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
2018/10/26 Python
使用python搭建服务器并实现Android端与之通信的方法
2019/06/28 Python
Python绘制堆叠柱状图的实例
2019/07/09 Python
Python confluent kafka客户端配置kerberos认证流程详解
2020/10/12 Python
python list等分并从等分的子集中随机选取一个数
2020/11/16 Python
python+appium+yaml移动端自动化测试框架实现详解
2020/11/24 Python
python+playwright微软自动化工具的使用
2021/02/02 Python
浅析HTML5中header标签的用法
2016/06/24 HTML / CSS
Perry Ellis官网:美国男士品味服装
2016/12/09 全球购物
财务与信息服务专业推荐信
2013/11/28 职场文书
物流管理专业职业生涯规划书
2014/01/06 职场文书
日语系毕业求职信
2014/07/27 职场文书
党的群众路线教育实践活动个人对照检查材料(教师)
2014/11/04 职场文书
停课通知书
2015/04/24 职场文书
刑事附带民事诉讼答辩状
2015/05/22 职场文书
vue 实现上传组件
2021/05/31 Vue.js
一次SQL如何查重及去重的实战记录
2022/03/13 MySQL
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技
HTML5之高度塌陷问题的解决
2022/06/01 HTML / CSS