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安全配置
Oct 09 PHP
PHP文件上传原理简单分析
May 29 PHP
解析php中的escape函数
Jun 29 PHP
使用PHP编写的SVN类
Jul 18 PHP
php时间戳格式化显示友好的时间函数分享
Oct 21 PHP
php array_map使用自定义的函数处理数组中的每个值
Oct 26 PHP
Yii框架引入coreseek分页功能示例
Feb 08 PHP
PHP实现唤起微信支付功能
Feb 18 PHP
从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记图文详解
Apr 03 PHP
YII2框架中behavior行为的理解与使用方法示例
Mar 13 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
May 01 PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
Mar 09 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 第二节 数据类型之转换
2012/04/28 PHP
PHP开发框架kohana3 自定义路由设置示例
2014/07/14 PHP
php实现向javascript传递数组的方法
2015/07/27 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
JavaScript中常用的运算符小结
2012/01/18 Javascript
jQuery中innerWidth()方法用法实例
2015/01/19 Javascript
javascript实现uploadify上传格式以及个数限制
2015/11/23 Javascript
学习JavaScript设计模式之代理模式
2016/01/12 Javascript
微信小程序 form组件详解及简单实例
2017/01/10 Javascript
JavaScript的六种继承方式(推荐)
2017/06/26 Javascript
使用3D引擎threeJS实现星空粒子移动效果
2020/09/13 Javascript
webstorm和.vue中es6语法报错的解决方法
2018/05/08 Javascript
nodejs实现范围请求的实现代码
2018/10/12 NodeJs
vue使用原生js实现滚动页面跟踪导航高亮的示例代码
2018/10/25 Javascript
前端Vue项目详解--初始化及导航栏
2019/06/24 Javascript
微信小程序自定义tabbar custom-tab-bar 6s出不来解决方案(cover-view不兼容)
2019/11/01 Javascript
jquery实现加载更多&quot;转圈圈&quot;效果(示例代码)
2020/11/09 jQuery
javascript实现放大镜功能
2020/12/09 Javascript
Python urlopen 使用小示例
2008/09/06 Python
python实现通过shelve修改对象实例
2014/09/26 Python
Python实现将目录中TXT合并成一个大TXT文件的方法
2015/07/15 Python
python2.7到3.x迁移指南
2018/02/01 Python
解决Python 中英文混输格式对齐的问题
2018/07/16 Python
pandas 使用均值填充缺失值列的小技巧分享
2019/07/04 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
python实现邮件循环自动发件功能
2020/09/11 Python
java关于string最常出现的面试题整理
2021/01/18 Python
香港卓悦化妆品官网:BONJOUR
2017/09/21 全球购物
外贸实习生自荐信范文
2013/11/24 职场文书
最新大学职业规划书范文
2013/12/30 职场文书
党的群众路线教育实践活动批评与自我批评
2014/02/16 职场文书
2014年计生工作总结
2014/11/21 职场文书
2016中秋节月饼促销广告语
2016/01/28 职场文书
《七月的天山》教学反思
2016/02/19 职场文书
如何起草一份正确的合伙创业协议书?
2019/07/04 职场文书
java项目构建Gradle的使用教程
2022/03/24 Java/Android