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 相关文章推荐
php session安全问题分析
Jun 24 PHP
php中用foreach来操作数组的代码
Jul 17 PHP
PHP程序开发范例学习之表单 获取文本框的值
Aug 08 PHP
一个简单的网页密码登陆php代码
Jul 17 PHP
解析:使用php mongodb扩展时 需要注意的事项
Jun 18 PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
Aug 08 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
May 08 PHP
Smarty模板引擎缓存机制详解
May 23 PHP
ajax+php实现无刷新验证手机号的实例
Dec 22 PHP
php 截取中英文混合字符串的方法
May 31 PHP
Laravel 不同生产环境服务器的判断实践
Oct 15 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 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
?繁体转换的class
2006/10/09 PHP
php与flash as3 socket通信传送文件实现代码
2014/08/16 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
2016/01/07 PHP
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
2020/04/14 PHP
js获取提交的字符串的字节数
2009/02/09 Javascript
jQuery+jqmodal弹出窗口实现代码分明
2010/06/14 Javascript
解析js如何获取当前url中的参数值并复制给input
2013/06/23 Javascript
js中单引号与双引号冲突问题解决方法
2013/10/04 Javascript
js操作table示例(个人心得)
2013/11/29 Javascript
JQuery实现表格动态增加行并对新行添加事件
2014/07/30 Javascript
实现js保留小数点后N位的代码
2014/11/13 Javascript
jQuery中attr()方法用法实例
2015/01/05 Javascript
深入探密Javascript数组方法
2015/01/08 Javascript
跟我学习javascript的严格模式
2015/11/16 Javascript
json传值以及ajax接收详解
2016/05/24 Javascript
js初始化验证实例详解
2016/11/26 Javascript
微信小程序通过api接口将json数据展现到小程序示例
2017/01/20 Javascript
详解微信第三方小程序代开发
2017/06/23 Javascript
Angular中封装fancyBox(图片预览)遇到问题小结
2017/09/01 Javascript
axios取消请求的实践记录分享
2018/09/26 Javascript
vue elementUI table 自定义表头和行合并的实例代码
2019/05/22 Javascript
[54:27]TNC vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[01:05:30]VP vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python3控制路由器——使用requests重启极路由.py
2016/05/11 Python
Python安装Flask环境及简单应用示例
2019/05/03 Python
Python生成器传参数及返回值原理解析
2020/07/22 Python
python安装sklearn模块的方法详解
2020/11/28 Python
HTML5 Canvas实现图片缩放、翻转、颜色渐变的代码示例
2016/02/28 HTML / CSS
GIVENCHY纪梵希官方旗舰店:高定彩妆与贵族护肤品
2018/04/16 全球购物
Discard Protocol抛弃协议的作用是什么
2015/10/10 面试题
生物专业个人自荐信范文
2013/11/29 职场文书
《小儿垂钓》教学反思
2014/02/23 职场文书
四风问题自我剖析材料
2014/10/07 职场文书
电子商务实训报告总结
2014/11/05 职场文书
八年级数学教学反思
2016/02/17 职场文书
传单、海报早OUT了,另类传单营销方案送给你!
2019/07/15 职场文书