PHP实现打包zip并下载功能


Posted in PHP onJune 12, 2018

具体代码如下所示:

$file_template = FCPATH.'canddata/cand_picture.zip';//在此之前你的项目目录中必须新建一个空的zip包(必须存在)
$downname = $card.'.zip';//你即将打包的zip文件名称
$file_name = FCPATH.'canddata/'.$card.'.zip';//把你打包后zip所存放的目录
$result = copy( $file_template, $file_name );//把原来项目目录存在的zip复制一份新的到另外一个目录并重命名(可以在原来的目录)
$zip = new ZipArchive();//新建一个对象
if ($zip->open($file_name, ZipArchive::CREATE) === TRUE) { //打开你复制过后空的zip包
$zip->addEmptyDir($card);//在zip压缩包中建一个空文件夹,成功时返回 TRUE, 或者在失败时返回 FALSE
//下面是我的场景业务处理,可根据自己的场景需要去处理(我的是将所有的图片打包)
$i = 1;
foreach ($cand_photo as $key3 => $value3) {
$file_ext = explode('.',$value3['cand_face']);//获取到图片的后缀名
$zip->addFromString($card.'/'.$card.'_'.$i.'.'.$file_ext[3] , file_get_contents($value3['cand_face']));//(图片的重命名,获取到图片的二进制流)
$i++;
}
$zip->close();
$fp=fopen($file_name,"r"); 
$file_size=filesize($file_name);//获取文件的字节
//下载文件需要用到的头 
Header("Content-type: application/octet-stream"); 
Header("Accept-Ranges: bytes"); 
Header("Accept-Length:".$file_size);
Header("Content-Disposition: attachment; filename=$downname"); 
$buffer=1024; //设置一次读取的字节数,每读取一次,就输出数据(即返回给浏览器) 
$file_count=0; //读取的总字节数 
//向浏览器返回数据 如果下载完成就停止输出,如果未下载完成就一直在输出。根据文件的字节大小判断是否下载完成
while(!feof($fp) && $file_count<$file_size){  
        $file_con=fread($fp,$buffer);  
        $file_count+=$buffer;  
        echo $file_con;  
    } 
fclose($fp); 
//下载完成后删除压缩包,临时文件夹 
if($file_count >= $file_size) { 
unlink($file_name); 
}
}

总结

以上所述是小编给大家介绍的PHP实现打包zip并下载功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
利用static实现表格的颜色隔行显示
Oct 09 PHP
php数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
Oct 31 PHP
基于PHP常用函数的用法详解
May 10 PHP
PHP实现上传文件并存进数据库的方法
Jul 16 PHP
标准版Eclipse搭建PHP环境的详细步骤
Nov 18 PHP
php中通过eval实现字符串格式的计算公式
Mar 18 PHP
PHP封装curl的调用接口及常用函数详解
May 31 PHP
Laravel框架路由和控制器的绑定操作方法
Jun 12 PHP
PHP封装的分页类与简单用法示例
Feb 25 PHP
PHP钩子实现方法解析
May 21 PHP
PHP中16个高危函数整理
Sep 19 PHP
php 的多进程操作实践案例分析
Feb 28 PHP
PHPUnit测试私有属性和方法功能示例
Jun 12 #PHP
PHP+redis实现的悲观锁机制示例
Jun 12 #PHP
thinkPHP5框架auth权限控制类与用法示例
Jun 12 #PHP
thinkPHP5框架实现基于ajax的分页功能示例
Jun 12 #PHP
Laravel框架路由和控制器的绑定操作方法
Jun 12 #PHP
Laravel框架路由设置与使用示例
Jun 12 #PHP
Laravel框架生命周期与原理分析
Jun 12 #PHP
You might like
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
2006/12/06 PHP
Wordpress php 分页代码
2009/10/21 PHP
php中常用字符串处理代码片段整理
2011/11/07 PHP
php判断页面是否是微信打开的示例(微信打开网页)
2014/04/25 PHP
php + WebUploader实现图片批量上传功能
2019/05/06 PHP
选择TreeView控件的树状数据节点的JS方法(jquery)
2010/02/06 Javascript
IE event.srcElement和FF event.target 功能比较
2010/03/01 Javascript
jQuery使用之设置元素样式用法实例
2015/01/19 Javascript
原生js实现类似弹窗抖动效果
2015/04/02 Javascript
jQuery中绑定事件bind() on() live() one()的异同
2017/02/23 Javascript
NodeJS链接MySql数据库的操作方法
2017/06/27 NodeJs
react实现菜单权限控制的方法
2017/12/11 Javascript
分享一个vue项目“脚手架”项目的实现步骤
2019/05/26 Javascript
Vue 路由间跳转和新开窗口的方式(query、params)
2019/12/25 Javascript
uni-app微信小程序登录授权的实现
2020/05/22 Javascript
[36:22]VP vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
探寻python多线程ctrl+c退出问题解决方案
2014/10/23 Python
解析Python编程中的包结构
2015/10/25 Python
python使用psutil模块获取系统状态
2016/08/27 Python
PyQt5每天必学之滑块控件QSlider
2018/04/20 Python
python中从str中提取元素到list以及将list转换为str的方法
2018/06/26 Python
python连接mongodb密码认证实例
2018/10/16 Python
python  文件的基本操作 菜中菜功能的实例代码
2019/07/17 Python
DJANGO-URL反向解析REVERSE实例讲解
2019/10/25 Python
python对Excel按条件进行内容补充(推荐)
2019/11/24 Python
python利用opencv实现SIFT特征提取与匹配
2020/03/05 Python
python程序输出无内容的解决方式
2020/04/09 Python
解决pip安装的第三方包在PyCharm无法导入的问题
2020/10/15 Python
Trip.com澳大利亚:在线旅行社
2019/12/01 全球购物
毕业生自我推荐
2013/11/04 职场文书
班主任工作年限证明
2014/01/12 职场文书
父母寄语大全
2014/04/12 职场文书
英语求职信范文
2014/05/23 职场文书
十佳好少年事迹材料
2014/08/21 职场文书
教师三严三实对照检查材料
2014/09/25 职场文书
关于MybatisPlus配置双数据库驱动连接数据库问题
2022/01/22 Java/Android