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动态创建Flash动画
Oct 09 PHP
dedecms后台验证码总提示错误的解决方法
Mar 21 PHP
兼容性比较好的PHP生成缩略图的代码
Jan 12 PHP
探讨PHP中OO之静态关键字以及类常量的详解
Jun 07 PHP
sql注入与转义的php函数代码
Jun 17 PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
Apr 24 PHP
php随机显示指定文件夹下图片的方法
Jul 13 PHP
Zend Framework连接Mysql数据库实例分析
Mar 19 PHP
php mysql获取表字段名称和字段信息的三种方法
Nov 13 PHP
php实现产品加入购物车功能(1)
Jul 23 PHP
PHP封装的XML简单操作类完整实例
Nov 13 PHP
php 截取中英文混合字符串的方法
May 31 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扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
PHP抽奖算法程序代码分享
2015/10/08 PHP
javascript encodeURI和encodeURIComponent的比较
2010/04/03 Javascript
js history对象简单实现返回和前进
2013/10/30 Javascript
JavaScript遍历求解数独问题的主要思路小结
2016/06/12 Javascript
JS中动态创建元素的三种方法总结(推荐)
2016/10/20 Javascript
RequireJs的使用详解
2017/02/19 Javascript
微信小程序仿微信运动步数排行(交互)
2018/07/13 Javascript
看看“疫苗查询”小程序有温度的代码
2018/07/31 Javascript
在小程序中使用Echart图表的示例代码
2018/08/02 Javascript
JavaScript面向对象程序设计创建对象的方法分析
2018/08/13 Javascript
小程序调用微信支付的方法
2019/09/26 Javascript
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
2020/02/03 Javascript
[04:50]DOTA2亚洲邀请赛小组赛第四日 TOP10精彩集锦
2015/02/02 DOTA
python使用threading获取线程函数返回值的实现方法
2017/11/15 Python
详解django中使用定时任务的方法
2018/09/27 Python
正确理解Python中if __name__ == '__main__'
2019/01/24 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
2019/07/23 Python
python实现递归查找某个路径下所有文件中的中文字符
2019/08/31 Python
Python使用matplotlib 模块scatter方法画散点图示例
2019/09/27 Python
python中lower函数实现方法及用法讲解
2020/12/23 Python
CSS3 重置iphone浏览器按钮input,select等表单元素的默认样式
2014/10/11 HTML / CSS
巧用 CSS3的webkit-box-reflect 倒影实现各类动效
2021/03/05 HTML / CSS
介绍下java.util.Arrays类
2012/10/16 面试题
电气自动化大学生求职信
2013/10/16 职场文书
公司董事长职责
2013/12/12 职场文书
大学军训感言1000字
2014/02/25 职场文书
毕业生个人求职自荐信
2014/02/26 职场文书
市场推广策划方案
2014/06/02 职场文书
纪委书记群众路线整改措施思想汇报
2014/10/09 职场文书
2014年质检员工作总结
2014/11/18 职场文书
2014年单位工作总结范文
2014/11/27 职场文书
施工单位工程部经理岗位职责
2015/04/09 职场文书
社区服务活动感想
2015/08/11 职场文书
教师外出学习心得体会
2016/01/18 职场文书
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
2021/06/26 MySQL