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传输数据的代码
Nov 13 PHP
来自phpguru得Php Cache类源码
Apr 15 PHP
PHP 强制下载文件代码
Oct 24 PHP
php 5.3.5安装memcache注意事项小结
Apr 12 PHP
php设计模式之观察者模式的应用详解
May 21 PHP
php class中public,private,protected的区别以及实例分析
Jun 18 PHP
php cli换行示例
Apr 22 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
Sep 10 PHP
yii的CURD操作实例详解
Dec 04 PHP
各种快递查询--Api接口
Apr 26 PHP
PHP实现的随机红包算法示例
Aug 14 PHP
PHP获取真实IP及IP模拟方法解析
Nov 24 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/05/26 PHP
PHP实现显示照片exif信息的方法
2014/07/11 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
2015/12/19 PHP
PHP实现对数组分页处理实例详解
2017/02/07 PHP
一些有关检查数据的JS代码
2006/09/07 Javascript
基于jquery实现的鼠标拖拽元素复制并写入效果
2011/08/23 Javascript
javascript分页代码(当前页码居中)
2012/09/20 Javascript
可自己添加html的伪弹出框实现代码
2013/09/08 Javascript
深入理解Javascript作用域与变量提升
2013/12/09 Javascript
node.js中的http.response.setHeader方法使用说明
2014/12/14 Javascript
九种原生js动画效果
2015/11/11 Javascript
javascript类型系统 Window对象学习笔记
2016/01/07 Javascript
Base64(二进制)图片编码解析及在各种浏览器的兼容性处理
2017/02/09 Javascript
jQuery实现弹幕效果
2017/02/17 Javascript
微信小程序动态的加载数据实例代码
2017/04/14 Javascript
最基础的vue.js双向绑定操作
2017/08/23 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
vue一个页面实现音乐播放器的示例
2018/02/06 Javascript
三分钟学会用ES7中的Async/Await进行异步编程
2018/06/14 Javascript
详解Vue Elementui中的Tag与页面其它元素相互交互的两三事
2018/09/25 Javascript
JS实现随机抽取三人
2019/11/06 Javascript
js实现圆形菜单选择器
2020/12/03 Javascript
零基础写python爬虫之神器正则表达式
2014/11/06 Python
python特性语法之遍历、公共方法、引用
2018/08/08 Python
python实现文件的备份流程详解
2019/06/18 Python
Python:二维列表下标互换方式(矩阵转置)
2019/12/02 Python
python3字符串输出常见面试题总结
2020/12/01 Python
python 装饰器的基本使用
2021/01/13 Python
出纳的岗位职责
2013/11/09 职场文书
行政专员工作职责
2013/12/22 职场文书
大学四年的个人自我评价
2014/01/14 职场文书
《绿色蝈蝈》教学反思
2014/03/02 职场文书
Pytorch 如何实现常用正则化
2021/05/27 Python
python异常中else的实例用法
2021/06/15 Python
Spring Bean是如何初始化的详解
2022/03/22 Java/Android
速龙x4-860k处理器相当于i几
2022/04/20 数码科技