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
PHP mail 通过Windows的SMTP发送邮件失败的解决方案
May 27 PHP
php 分页原理详解
Aug 21 PHP
php递归实现无限分类生成下拉列表的函数
Aug 08 PHP
PHP系列学习之日期函数使用介绍
Aug 18 PHP
yii实现图片上传及缩略图生成的方法
Dec 04 PHP
php把数组值转换成键的方法
Jul 13 PHP
Codeigniter中集成smarty和adodb的方法
Mar 04 PHP
PHP获取input输入框中的值去数据库比较显示出来
Nov 16 PHP
php判断是否连接上网络的方法实例详解
Dec 14 PHP
用PHP的socket实现客户端到服务端的通信实例详解
Feb 04 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
Dec 25 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设计模式之代理模式的深入解析
2013/06/13 PHP
解析php中static,const与define的使用区别
2013/06/18 PHP
PHP中VC6、VC9、TS、NTS版本的区别与用法详解
2013/10/26 PHP
Laravel 5框架学习之子视图和表单复用
2015/04/09 PHP
关于PHP开发的9条建议
2015/07/27 PHP
php简单获取复选框值的方法
2016/05/11 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
2017/04/03 PHP
PHP实现微信图片上传到服务器的方法示例
2017/06/29 PHP
PHP时间处理类操作示例
2018/09/05 PHP
checkbox 复选框不能为空
2009/07/11 Javascript
javascript中的parseInt和parseFloat区别
2013/07/12 Javascript
jQuery实现鼠标点击弹出渐变层的方法
2015/07/09 Javascript
JavaScript判断FileUpload控件上传文件类型
2015/09/28 Javascript
常用javascript表单验证汇总
2020/07/20 Javascript
浅析JavaScript中作用域和作用域链
2016/12/06 Javascript
ES6概念 Symbol.keyFor()方法
2016/12/25 Javascript
ES6生成器用法实例分析
2017/04/10 Javascript
vue2.0 keep-alive最佳实践
2017/07/06 Javascript
vue2.0移除或更改的一些东西(移除index key)
2017/08/28 Javascript
angular2模块和共享模块详解
2018/04/08 Javascript
详解Webpack + ES6 最新环境搭建与配置
2018/06/04 Javascript
vue中动态添加class类名的方法
2018/09/05 Javascript
vue 父组件中调用子组件函数的方法
2019/06/06 Javascript
Python 窗体(tkinter)按钮 位置实例
2019/06/13 Python
Django 使用easy_thumbnails压缩上传的图片方法
2019/07/26 Python
python使用matplotlib绘制雷达图
2019/10/18 Python
Python猜数字算法题详解
2020/03/01 Python
关键字final的用法
2013/10/02 面试题
国际贸易专业个人求职信格式
2014/02/02 职场文书
关心下一代工作先进事迹
2014/08/15 职场文书
工会工作先进事迹
2014/08/18 职场文书
承诺书样本
2014/08/30 职场文书
纪念九一八事变演讲稿1000字
2014/09/14 职场文书
Go语言使用select{}阻塞main函数介绍
2021/04/25 Golang
java多态注意项小结
2021/10/16 Java/Android
六个好看实用的 HTML + CSS 后台登录入口页面
2022/04/28 HTML / CSS