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读取IMAP邮件
Oct 09 PHP
聊天室php&amp;mysql(一)
Oct 09 PHP
用PHP和ACCESS写聊天室(五)
Oct 09 PHP
php中使用Akismet防止垃圾评论的代码
Jun 10 PHP
PHP漏洞全解(详细介绍)
Nov 13 PHP
浅析php中三个等号(===)和两个等号(==)的区别
Aug 06 PHP
分享常见的几种页面静态化的方法
Jan 08 PHP
PHP支付系统设计与典型案例分享
Aug 02 PHP
PHP接收App端发送文件流的方法
Sep 23 PHP
PHP获取数组中单列值的方法
Jun 10 PHP
PHP进阶学习之Geo的地图定位算法详解
Jun 19 PHP
深入学习微信网址链接解封的防封原理visit_type
Aug 15 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+javascript液晶时钟
2006/10/09 PHP
php 无限级 SelectTree 类
2009/05/19 PHP
php编写的一个E-mail验证类
2015/03/25 PHP
php+ajax实现无刷新分页
2015/11/18 PHP
PHP批量去除BOM头内容信息代码
2016/03/11 PHP
Yii2实现让关联字段支持搜索功能的方法
2016/08/10 PHP
Query中click(),bind(),live(),delegate()的区别
2013/11/19 Javascript
微信小程序 window_x64环境搭建
2016/09/30 Javascript
Bootstrap企业网站实战项目4
2016/10/14 Javascript
JavaScript简单验证表单空值及邮箱格式的方法
2017/01/20 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
echarts饼图扇区添加点击事件的实例
2017/10/16 Javascript
vue 做移动端微信公众号采坑经验记录
2018/04/26 Javascript
详解vue组件基础
2018/05/04 Javascript
小程序scroll-view组件实现滚动的示例代码
2018/09/20 Javascript
浅谈关于JS下大批量异步任务按顺序执行解决方案一点思考
2019/01/08 Javascript
Vue批量图片显示时遇到的路径被解析问题
2019/03/28 Javascript
微信小程序webview与h5通过postMessage实现实时通讯的实现
2019/08/20 Javascript
图解NodeJS实现登录注册功能
2019/09/16 NodeJs
详解node和ES6的模块导出与导入
2020/02/19 Javascript
[00:35]DOTA2上海特级锦标赛 EG战队宣传片
2016/03/04 DOTA
python回溯法实现数组全排列输出实例分析
2015/03/17 Python
设计模式中的原型模式在Python程序中的应用示例
2016/03/02 Python
Python 常用的安装Module方式汇总
2017/05/06 Python
Python 记录日志的灵活性和可配置性介绍
2018/02/27 Python
获取python的list中含有重复值的index方法
2018/06/27 Python
Python实现朴素贝叶斯分类器的方法详解
2018/07/04 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
2019/07/09 Python
python 从list中随机取值的方法
2020/11/16 Python
css3绘制天猫logo实现代码
2012/11/06 HTML / CSS
Omio葡萄牙:全欧洲低价大巴、火车和航班搜索和比价
2019/02/09 全球购物
机电专业毕业生推荐信
2013/11/10 职场文书
数控技术应届生求职信
2013/11/13 职场文书
优秀员工自荐书
2015/03/06 职场文书
MySQL 重命名表的操作方法及注意事项
2021/05/21 MySQL
AngularJS实现多级下拉框
2022/03/25 Javascript