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 快速生成 Flash 动画的方法
Mar 06 PHP
DEDE采集大师官方留后门的删除办法
Jan 08 PHP
php笔记之:文章中图片处理的使用
Apr 26 PHP
使用cookie实现统计访问者登陆次数
Jun 08 PHP
提升PHP性能的21种方法介绍
Jun 25 PHP
CodeIgniter上传图片成功的全部过程分享
Aug 12 PHP
destoon复制新模块的方法
Jun 21 PHP
jquery+php实现导出datatables插件数据到excel的方法
Jul 06 PHP
PHP比较运算符的详细介绍
Sep 29 PHP
Symfony2使用Doctrine进行数据库查询方法实例总结
Mar 18 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
Nov 17 PHP
php中访问修饰符的知识点总结
Jan 27 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中的类-什么叫类
2006/11/20 PHP
php缓存技术介绍
2006/11/25 PHP
利用Fix Rss Feeds插件修复WordPress的Feed显示错误
2015/12/19 PHP
详解php反序列化
2020/06/10 PHP
javascript中的=等号个数问题两个跟三个有什么区别
2013/10/23 Javascript
JQuery跳出each循环的方法
2015/04/16 Javascript
浅谈几种常用的JS类定义方法
2016/06/08 Javascript
JS瀑布流实现方法实例分析
2016/12/19 Javascript
Bootstrap源码解读表单(2)
2016/12/22 Javascript
Javascript下拉刷新的简单实现
2017/02/14 Javascript
React学习笔记之列表渲染示例详解
2017/08/22 Javascript
React Router v4 入坑指南(小结)
2018/04/08 Javascript
使用vuex的state状态对象的5种方式
2018/04/19 Javascript
JS实现的缓冲运动效果示例
2018/04/30 Javascript
Vue中使用的EventBus有生命周期
2018/07/12 Javascript
从源码里了解vue中的nextTick的使用
2018/11/22 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
2018/12/13 Javascript
nodejs微信开发之授权登录+获取用户信息
2019/03/17 NodeJs
解决layui调用自定义方法提示未定义的问题
2019/09/14 Javascript
Python实现pdf文档转txt的方法示例
2018/01/19 Python
Python的条件表达式和lambda表达式实例
2019/01/31 Python
python命名空间(namespace)简单介绍
2019/08/10 Python
如何获取Python简单for循环索引
2019/11/21 Python
使用Python进行防病毒免杀解析
2019/12/13 Python
Expedia泰国:预订机票、酒店和旅游包(航班+酒店)
2016/09/27 全球购物
德国传统玻璃制造商:Cristalica
2018/04/23 全球购物
微软加拿大官方网站:Microsoft Canada
2019/04/28 全球购物
美国在线艺术商店:HandmadePiece
2020/11/06 全球购物
公司管理建议书范文
2014/03/12 职场文书
交通事故协议书范文
2014/04/16 职场文书
护士优质服务演讲稿
2014/08/26 职场文书
办公室禁烟通知
2015/04/23 职场文书
2015年汽车销售员工作总结
2015/07/24 职场文书
职业规划从高考志愿专业选择开始
2019/08/08 职场文书
2019个人工作自我评价范文(3篇)
2019/09/19 职场文书
HTML+JS实现在线朗读器
2022/02/15 Javascript