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开发中常用的8个小技巧
Aug 27 PHP
php动态生成JavaScript代码
Mar 09 PHP
收藏的PHP常用函数 推荐收藏保存
Feb 21 PHP
关于UEditor编辑器远程图片上传失败的解决办法
Aug 31 PHP
fetchAll()与mysql_fetch_array()的区别详解
Jun 05 PHP
基于PHP创建Cookie数组的详解
Jul 03 PHP
将二维数组转为一维数组的2种方法
May 26 PHP
PHP中执行cmd命令的方法
Oct 11 PHP
php获得网站访问统计信息类Compete API用法实例
Apr 02 PHP
PHP实现HTML页面静态化的方法
Nov 04 PHP
Yii框架数据库查询、增加、删除操作示例
Oct 14 PHP
thinkphp5 redis缓存新增方法实例讲解
Mar 24 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
Zerg剧情介绍
2020/03/14 星际争霸
PHPMailer邮件类利用smtp.163.com发送邮件方法
2008/09/11 PHP
PHP全局变量与超级全局变量区别分析
2016/04/01 PHP
PHP实现登录注册之BootStrap表单功能
2017/09/03 PHP
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
JavaScript事件委托用法分析
2015/01/24 Javascript
使用snowfall.jquery.js实现爱心满屏飞的效果
2017/01/05 Javascript
RequireJs的使用详解
2017/02/19 Javascript
JavaScript的setter与getter方法
2017/11/29 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
2017/12/07 Javascript
vue element-ui table表格滚动加载方法
2018/03/02 Javascript
vue中axios的封装问题(简易版拦截,get,post)
2018/06/15 Javascript
js笔试题-接收get请求参数
2019/06/15 Javascript
extjs图表绘制之条形图实现方法分析
2020/03/06 Javascript
Vue中通过vue-router实现命名视图的问题
2020/04/23 Javascript
vue $mount 和 el的区别说明
2020/09/11 Javascript
[01:45:05]VGJ.T vs Newbee Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
编写自定义的Django模板加载器的简单示例
2015/07/21 Python
MySQL中表的复制以及大型数据表的备份教程
2015/11/25 Python
Python批处理更改文件名os.rename的方法
2018/10/26 Python
Python GUI编程 文本弹窗的实例
2019/06/11 Python
pytorch 实现删除tensor中的指定行列
2020/01/13 Python
Pytorch 使用CNN图像分类的实现
2020/06/16 Python
西班牙创意礼品和小工具网上商店:Curiosite
2016/07/26 全球购物
Mankind西班牙男士护肤品网站:购买皮肤护理、护发和剃须
2017/04/27 全球购物
日本最大化妆品和美容产品的综合口碑网站:cosme shopping
2019/08/28 全球购物
澳大利亚买卖正宗二手奢侈品交易平台:Luxe.It.Fwd
2019/10/16 全球购物
*p++ 自增p 还是p所指向的变量
2016/07/16 面试题
值类型与引用类型有什么不同?请举例说明?并分别列举几种相应的数据类型
2015/10/24 面试题
电大自我鉴定
2013/10/27 职场文书
应届毕业生个人求职信范文
2014/01/29 职场文书
银行员工犯错检讨书
2014/09/16 职场文书
关于运动会广播稿50字
2014/10/18 职场文书
公务员个人年终总结
2015/02/12 职场文书
英语版自我评价,35句话轻松搞定
2019/10/08 职场文书
2019幼儿园感恩节活动策划书
2019/11/28 职场文书