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实现的仿阿里巴巴实现同类产品翻页
Dec 11 PHP
php邮件发送,php发送邮件的类
Mar 24 PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
Jun 27 PHP
探讨多键值cookie(php中cookie存取数组)的详解
Jun 06 PHP
PHP写的资源下载防盗链类分享
May 12 PHP
php中出现空白页的原因及解决方法汇总
Jul 08 PHP
PHP使用Session遇到的一个Permission denied Notice解决办法
Jul 30 PHP
php实现将上传word文件转为html的方法
Jun 03 PHP
thinkphp修改配置进入默认首页的方法
Feb 07 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
Aug 21 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
May 23 PHP
Laravel框架实现的上传图片到七牛功能详解
Sep 06 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脚本数据库功能详解(中)
2006/10/09 PHP
PHP自动生成后台导航网址的最佳方法
2013/08/27 PHP
Laravel框架实现多数据库连接操作详解
2019/07/12 PHP
dotopAlert 提示用户需安装播放器的代码
2012/09/17 Javascript
基于datagrid框架的查询
2013/04/08 Javascript
javascript中数组中求最大值示例代码
2013/12/18 Javascript
jquery attr方法获取input的checked属性问题
2014/05/26 Javascript
浅谈Sizzle的“编译原理”
2015/04/14 Javascript
JS实现对中文字符串进行utf-8的Base64编码的方法(使其与Java编码相同)
2016/06/21 Javascript
自定义require函数让浏览器按需加载Js文件
2016/11/24 Javascript
vue.js学习之递归组件
2016/12/13 Javascript
使用jquery给新生的th绑定hover事件的实例
2017/02/10 Javascript
浅谈vue项目重构技术要点和总结
2018/01/23 Javascript
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
2018/07/12 Javascript
vue+echarts实现动态绘制图表及异步加载数据的方法
2018/10/17 Javascript
Js代码中的span拼接问题解决
2019/11/22 Javascript
Vue+Node实现的商城用户管理功能示例
2019/12/23 Javascript
vue2.0 watch里面的 deep和immediate用法说明
2020/10/30 Javascript
vue3自定义dialog、modal组件的方法
2021/01/04 Vue.js
深入理解Python 代码优化详解
2014/10/27 Python
在Python中处理XML的教程
2015/04/29 Python
python方向键控制上下左右代码
2018/01/20 Python
Python实现PS滤镜的万花筒效果示例
2018/01/23 Python
Python/Django后端使用PIL Image生成头像缩略图
2019/04/30 Python
Python利用PyPDF2库获取PDF文件总页码实例
2020/04/03 Python
Django如何使用redis作为缓存
2020/05/21 Python
Python pip安装模块提示错误解决方案
2020/05/22 Python
德国药房apodiscounter中文官网:德国排名前三的网上药店
2019/06/03 全球购物
更夫岗位责任制
2014/02/11 职场文书
《跨越百年的美丽》教学反思
2014/02/11 职场文书
小学毕业典礼主持词
2014/03/27 职场文书
珍惜时间演讲稿
2014/05/14 职场文书
企业消防安全责任书
2014/07/23 职场文书
施工单位安全责任书
2014/07/24 职场文书
只需要12页,掌握撰写一流商业计划书的技巧
2019/05/07 职场文书
公开致歉信
2019/06/24 职场文书