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 相关文章推荐
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
Feb 08 PHP
php设计模式 Decorator(装饰模式)
Jun 26 PHP
php数据库配置文件一般做法分享
Jul 07 PHP
如何批量替换相对地址为绝对地址(利用bat批处理实现)
May 27 PHP
Zend Studio 实用快捷键一览表(精心整理)
Aug 10 PHP
js+php实现静态页面实时调用用户登陆状态的方法
Jan 04 PHP
PHP将session信息存储到数据库的类实例
Mar 04 PHP
浅析php静态方法与非静态方法的用法区别
May 17 PHP
PHP简单预防sql注入的方法
Sep 27 PHP
PHP XML和数组互相转换详解
Oct 26 PHP
php+ajax实现文件切割上传功能示例
Mar 03 PHP
PHP实现创建以太坊钱包转账等功能
Apr 21 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
谈谈PHP语法(4)
2006/10/09 PHP
PHP 5.0对象模型深度探索之对象复制
2008/03/27 PHP
php使用gd2绘制基本图形示例(直线、圆、正方形)
2017/02/15 PHP
PHP将数据导出Excel表中的实例(投机型)
2017/07/31 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
js图片自动切换效果处理代码
2013/05/07 Javascript
JavaScript判断文件上传类型的方法
2014/09/02 Javascript
浅谈javascript属性onresize
2015/04/20 Javascript
新手快速学习JavaScript免费教程资源汇总
2015/06/25 Javascript
JS判断元素是否在数组内的实现代码
2016/03/30 Javascript
KnockoutJs快速入门教程
2016/05/16 Javascript
浅谈Javascript数据属性与访问器属性
2016/07/26 Javascript
浅析JavaScript函数的调用模式
2016/08/10 Javascript
禁用backspace网页回退功能的实现代码
2016/11/15 Javascript
vue-cli如何引入bootstrap工具的方法
2017/10/19 Javascript
Vue动态获取width的方法
2018/08/22 Javascript
总结4个方面优化Vue项目
2019/02/11 Javascript
vue 弹窗时 监听手机返回键关闭弹窗功能(页面不跳转)
2019/05/10 Javascript
Vue页面刷新记住页面状态的实现
2019/12/27 Javascript
Vue微信公众号网页分享的示例代码
2020/05/28 Javascript
[01:07]DOTA2次级职业联赛 - Fpb战队宣传片
2014/12/01 DOTA
[42:11]TNC vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python下实现的RSA加密/解密及签名/验证功能示例
2017/07/17 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
2018/12/27 Python
Python变量访问权限控制详解
2019/06/29 Python
有关Tensorflow梯度下降常用的优化方法分享
2020/02/04 Python
Python之qq自动发消息的示例代码
2021/02/18 Python
HTML5的一个显示电池状态的API简介
2015/06/18 HTML / CSS
家长对孩子评语
2014/01/30 职场文书
超市优秀员工获奖感言
2014/08/15 职场文书
2015年调度员工作总结
2015/04/30 职场文书
英语导游欢迎词
2015/09/30 职场文书
mongodb的安装和开机自启动详细讲解
2021/08/02 MongoDB
Python中的变量与常量
2021/11/11 Python
Python GUI编程之tkinter 关于 ttkbootstrap 的使用详解
2022/03/03 Python
vue判断按钮是否可以点击
2022/04/09 Vue.js