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 相关文章推荐
Windows PHP5和Apache的安装与配置
Jun 08 PHP
php_xmlhttp 乱码问题解决方法
Aug 07 PHP
php中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
Aug 23 PHP
php在程序中将网页生成word文档并提供下载的代码
Oct 09 PHP
ThinkPHP分页类使用详解
Mar 05 PHP
ThinkPHP实现将本地文件打包成zip下载
Jun 26 PHP
PHP命名空间(namespace)的使用基础及示例
Aug 18 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
Feb 07 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
Feb 28 PHP
PHP实现活动人选抽奖功能
Apr 19 PHP
php实现websocket实时消息推送
Mar 30 PHP
php-fpm添加service服务的例子
Apr 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
《五等分的花嫁》漫画完结!2020年10月第2期TV动画制作组换血!
2020/03/06 日漫
多重?l件?合查?(二)
2006/10/09 PHP
在项目中寻找代码的坏命名
2012/07/14 PHP
php实现统计邮件大小的方法
2013/08/06 PHP
神盾加密解密教程(二)PHP 神盾解密
2014/06/08 PHP
php实现比较两个文件夹异同的方法
2015/06/18 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
购物车实现的几种方式优缺点对比
2018/05/02 PHP
php反射学习之不用new方法实例化类操作示例
2019/06/14 PHP
Event altKey,ctrlKey,shiftKey属性解析
2013/12/18 Javascript
BootStrap table使用方法分析
2016/11/08 Javascript
jQuery插件fullPage.js实现全屏滚动效果
2016/12/02 Javascript
Angular2学习笔记——详解NgModule模块
2016/12/02 Javascript
js中DOM三级列表(代码分享)
2017/03/20 Javascript
jquery插件canvaspercent.js实现百分比圆饼效果
2017/07/18 jQuery
Vue使用NPM方式搭建项目
2018/10/25 Javascript
微信小程序实现时间预约功能
2018/11/27 Javascript
微信小程序JS加载esmap地图的实例详解
2019/09/04 Javascript
vue实现表单录入小案例
2019/09/27 Javascript
js实现简单的随机点名器
2020/09/17 Javascript
vue3+typeScript穿梭框的实现示例
2020/12/29 Vue.js
Python实现单词翻译功能
2017/06/06 Python
Python爬豆瓣电影实例
2018/02/23 Python
python 匹配url中是否存在IP地址的方法
2018/06/04 Python
django的分页器Paginator 从django中导入类
2019/07/25 Python
Python合并2个字典成1个新字典的方法(9种)
2019/12/19 Python
Python拼接字符串的7种方式详解
2020/03/19 Python
python检查目录文件权限并修改目录文件权限的操作
2020/03/11 Python
css3实现小箭头各种图形效果
2020/07/08 HTML / CSS
Origins加拿大官网:雅诗兰黛集团高端植物护肤品牌
2017/11/19 全球购物
实习自我鉴定范文
2013/10/30 职场文书
先进集体事迹材料
2014/02/17 职场文书
推广普通话共筑中国梦演讲稿
2014/09/21 职场文书
街道党工委党的群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
上诉答辩状范文
2015/05/22 职场文书
导游词之凤凰古城
2019/10/22 职场文书