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.ini中文版(1)
Oct 09 PHP
PHP curl 并发最佳实践代码分享
Sep 05 PHP
基于MySQL到MongoDB简易对照表的详解
Jun 03 PHP
yii框架builder、update、delete使用方法
Apr 30 PHP
destoon出现验证码不显示时的紧急处理方法
Aug 22 PHP
php发送短信验证码完成注册功能
Nov 24 PHP
Zend Framework教程之视图组件Zend_View用法详解
Mar 05 PHP
php版微信公众号自定义分享内容实现方法
Sep 22 PHP
Yii2实现UploadedFile上传文件示例
Feb 15 PHP
php基于数组函数实现关联表的编辑操作示例
Jul 04 PHP
laravel-admin的图片删除实例
Sep 30 PHP
Yii框架数据库查询、增加、删除操作示例
Oct 14 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 数组二分法查找函数代码
2010/02/16 PHP
深入phpMyAdmin的安装与配置的详细步骤
2013/05/07 PHP
Yii2.0实现的批量更新及批量插入功能示例
2019/01/29 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
2019/08/05 PHP
javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
2011/04/12 Javascript
Web Inspector:关于在 Sublime Text 中调试Js的介绍
2013/04/18 Javascript
raphael.js绘制中国地图 地图绘制方法
2014/02/12 Javascript
每天一篇javascript学习小结(基础知识)
2015/11/10 Javascript
JavaScript必知必会(六) delete in instanceof
2016/06/08 Javascript
微信小程序前端源码逻辑和工作流
2016/09/25 Javascript
原生JS实现图片左右轮播
2016/12/30 Javascript
jQuery插件zTree实现的多选树效果示例
2017/03/08 Javascript
利用 spin.js 生成等待效果(js 等待效果)
2017/06/25 Javascript
谈谈vue中mixin的一点理解
2017/12/12 Javascript
使用sessionStorage解决vuex在页面刷新后数据被清除的问题
2018/04/13 Javascript
浅谈webpack4 图片处理汇总
2018/09/12 Javascript
详解swiper在vue中的应用(以3.0为例)
2018/09/20 Javascript
详解vue中axios的使用与封装
2019/03/20 Javascript
vue实现移动端轻量日期组件不依赖第三方库的方法
2019/04/28 Javascript
vue中添加与删除关键字搜索功能
2019/10/12 Javascript
js正则匹配多个全部数据问题
2019/12/20 Javascript
javascript canvas实现简易时钟例子
2020/09/05 Javascript
Nodejs实现微信分账的示例代码
2021/01/19 NodeJs
Linux下为不同版本python安装第三方库
2016/08/31 Python
Python的IDEL增加清屏功能实例
2017/06/19 Python
python 实现tar文件压缩解压的实例详解
2017/08/20 Python
Python中pandas dataframe删除一行或一列:drop函数详解
2018/07/03 Python
Python关于excel和shp的使用在matplotlib
2019/01/03 Python
利用python如何实现猫捉老鼠小游戏
2020/12/04 Python
纯css3使用vw和vh实现自适应的方法
2018/02/09 HTML / CSS
美国眼镜网站:EyeBuyDirect
2017/04/13 全球购物
高三自我鉴定怎么写
2013/10/19 职场文书
《雷鸣电闪波尔卡》教学反思
2014/02/23 职场文书
2014年工人工作总结
2014/11/25 职场文书
财务经理岗位职责
2015/01/31 职场文书
2016教师廉洁教育心得体会
2016/01/13 职场文书