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简单系统查询模块代码打包下载
Jun 07 PHP
隐性调用php程序的方法
Mar 09 PHP
PHP得到某段时间区间的时间戳 php定时任务
Apr 12 PHP
PHP 查找字符串常用函数介绍
Jun 07 PHP
解决phpmyadmin中缺少mysqli扩展问题的方法
May 06 PHP
如何取得中文字符串中出现次数最多的子串
Aug 08 PHP
php.ini save_handler 修改不生效的解决办法
Jul 22 PHP
php读取文件内容的方法汇总
Jan 24 PHP
thinkphp修改配置进入默认首页的方法
Feb 07 PHP
如何打开php的gd2库
Feb 09 PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
Mar 08 PHP
PHP强制转化的形式整理
May 22 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
一个odbc连mssql分页的类
2006/10/09 PHP
透析PHP的配置文件php.ini
2006/10/09 PHP
require(),include(),require_once()和include_once()的异同
2007/01/02 PHP
PHP版自动生成文章摘要
2008/07/23 PHP
Zend Framework教程之Zend_Db_Table用法详解
2016/03/21 PHP
图片动画横条广告带上下滚动可自定义图片、链接等等
2013/10/20 Javascript
JavaScript在浏览器标题栏上显示当前日期和时间的方法
2015/03/19 Javascript
javascript中关于&amp;&amp; 和 || 表达式的小技巧分享
2015/04/10 Javascript
javascript实现删除前弹出确认框
2015/06/04 Javascript
jquery中的常见问题及快速解决方法小结
2016/06/14 Javascript
Bootstrap栅格系统的使用和理解2
2016/12/14 Javascript
js中let和var定义变量的区别
2018/02/08 Javascript
Javascript节流函数throttle和防抖函数debounce
2020/12/03 Javascript
vue实现禁止浏览器记住密码功能的示例代码
2021/02/03 Vue.js
python中Flask框架简单入门实例
2015/03/21 Python
python分析网页上所有超链接的方法
2015/05/08 Python
Python使用Redis实现作业调度系统(超简单)
2016/03/22 Python
Python基于socket实现简单的即时通讯功能示例
2018/01/16 Python
Python输入二维数组方法
2018/04/13 Python
Numpy中转置transpose、T和swapaxes的实例讲解
2018/04/17 Python
Python寻找路径和查找文件路径的示例
2019/07/10 Python
利用Python的sympy包求解一元三次方程示例
2019/11/22 Python
关于Python3 lambda函数的深入浅出
2019/11/27 Python
python 利用已有Ner模型进行数据清洗合并代码
2019/12/24 Python
Python使用xlrd实现读取合并单元格
2020/07/09 Python
python3中for循环踩过的坑记录
2020/12/14 Python
英国领先的维生素和营养补充剂直接供应商:Healthspan
2019/04/22 全球购物
台湾全方位线上课程与职能学习平台:TibaMe
2019/12/04 全球购物
全球烹饪课程的领先预订平台:Cookly
2020/01/28 全球购物
将一个数的从第5位开始的7个数取出,其余位置0
2016/05/26 面试题
中专自我鉴定范文
2013/10/16 职场文书
理货员的岗位职责
2013/11/23 职场文书
亮剑观后感300字
2015/06/05 职场文书
导游词之五台山
2019/10/11 职场文书
带你彻底理解JavaScript中的原型对象
2021/04/14 Javascript
Go语言应该什么情况使用指针
2021/07/25 Golang