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 相关文章推荐
PHP5中MVC结构学习
Oct 09 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
Sep 07 PHP
PHP中copy on write写时复制机制介绍
May 13 PHP
php实现通用的信用卡验证类
Mar 24 PHP
基于PHP实现的事件机制实例分析
Jun 18 PHP
php语言的7种基本的排序方法
Dec 28 PHP
php微信开发之自定义菜单完整流程
Oct 08 PHP
php str_replace替换指定次数的方法详解
May 05 PHP
php插件Xajax使用方法详解
Aug 31 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 PHP
Laravel框架自定义公共函数的引入操作示例
Apr 16 PHP
通过实例解析PHP数据类型转换方法
Jul 11 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
spl_autoload_register与autoload的区别详解
2013/06/03 PHP
解析左右值无限分类的实现算法
2013/06/20 PHP
解析php中如何直接执行SHELL
2013/06/28 PHP
PHP实现的浏览器检查类
2016/04/11 PHP
laravel5.2实现区分前后台用户登录的方法
2017/01/11 PHP
页面版文本框智能提示JS代码
2009/11/20 Javascript
jQuery-Tools-overlay 使用介绍
2012/07/14 Javascript
Javascript 判断是否存在函数的方法
2013/01/03 Javascript
javaScript(JS)替换节点实现思路介绍
2013/04/17 Javascript
Javascript delete 引用类型对象
2013/11/01 Javascript
JS使用post提交的两种方式
2015/12/03 Javascript
使用jQuery处理AJAX请求的基础学习教程
2016/05/10 Javascript
AngularJS ng-bind-template 指令详解
2016/07/30 Javascript
BootStrap中的表单大全
2016/09/07 Javascript
jQuery实现的超链接提示效果示例【附demo源码下载】
2016/09/09 Javascript
使用PBFunc在Powerbuilder中支付宝当面付款功能
2016/10/01 Javascript
利用BootStrap的Carousel.js实现轮播图动画效果
2016/12/21 Javascript
如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标
2016/12/21 Javascript
js正则表达式惰性匹配和贪婪匹配用法分析
2016/12/26 Javascript
jQuery插件FusionCharts绘制2D双折线图效果示例【附demo源码】
2017/04/14 jQuery
微信小程序自定义toast实现方法详解【附demo源码下载】
2017/11/28 Javascript
js正则相关知识点专题
2018/05/10 Javascript
js canvas实现画图、滤镜效果
2018/11/27 Javascript
通过javascript实现段落的收缩与展开
2019/06/26 Javascript
Node.js API详解之 dns模块用法实例分析
2020/05/15 Javascript
JSON stringify方法原理及实例解析
2020/10/23 Javascript
vue3.0搭配.net core实现文件上传组件
2020/10/29 Javascript
[54:33]2018DOTA2亚洲邀请赛小组赛 A组加赛 Liquid vs Optic
2018/04/03 DOTA
Python正则抓取新闻标题和链接的方法示例
2017/04/24 Python
对tf.reduce_sum tensorflow维度上的操作详解
2018/07/26 Python
python DataFrame转dict字典过程详解
2019/12/26 Python
实列教程 一款基于jquery和css3的响应式二级导航菜单
2014/11/13 HTML / CSS
H5新属性audio音频和video视频的控制详解(推荐)
2016/12/09 HTML / CSS
需求分析说明书
2014/05/09 职场文书
2015年环卫工作总结
2015/04/28 职场文书
2015团员个人年度总结
2015/11/24 职场文书