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 nl2br函数 将换行字符转成 &amp;lt;br&amp;gt;
Aug 21 PHP
PHP 遍历文件实现代码
May 04 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
Jan 12 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
Jun 09 PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
Nov 03 PHP
php使用curl详细解析及问题汇总
Aug 11 PHP
详解php中serialize()和unserialize()函数
Jul 08 PHP
浅谈PHP中new self()和new static()的区别
Aug 11 PHP
php实现与python进行socket通信的方法示例
Aug 30 PHP
php+lottery.js实现九宫格抽奖功能
Jul 21 PHP
在phpstudy集成环境下的nginx服务器下配置url重写
Dec 02 PHP
PHP Trait功能与用法实例分析
Jun 03 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类(查找/修改)xml文档
2013/03/26 PHP
微信营销平台系统?刮刮乐的开发
2014/06/10 PHP
PHP文件缓存内容保存格式实例分析
2014/08/20 PHP
destoon实现VIP排名一直在前面排序的方法
2014/08/21 PHP
thinkphp自带验证码全面解析
2016/09/18 PHP
在线编辑器中换行与内容自动提取
2009/04/24 Javascript
javascript的onchange事件与jQuery的change()方法比较
2009/09/28 Javascript
XmlUtils JS操作XML工具类
2009/10/01 Javascript
利用javascript的面向对象的特性实现限制试用期
2011/08/04 Javascript
js文件缓存之版本管理详解
2013/07/05 Javascript
jquery、js调用iframe父窗口与子窗口元素的方法整理
2014/07/31 Javascript
鼠标悬浮显示二级菜单效果的jquery实现
2014/10/29 Javascript
纯js实现无限空间大小的本地存储
2015/06/18 Javascript
javascript 中的console.log和弹出窗口alert
2016/08/30 Javascript
JavaScript制作弹出层效果
2016/12/02 Javascript
关于vuex的学习实践笔记
2017/04/05 Javascript
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
2018/05/26 jQuery
vue路由组件按需加载的几种方法小结
2018/07/12 Javascript
详解如何在JS代码中消灭for循环
2019/12/11 Javascript
基于NodeJS开发钉钉回调接口实现AES-CBC加解密
2020/08/20 NodeJs
[01:07:19]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第一场 1月19日
2021/03/11 DOTA
python实现输入数字的连续加减方法
2018/06/22 Python
Python中实例化class的执行顺序示例详解
2018/10/14 Python
Python使用pandas对数据进行差分运算的方法
2018/12/22 Python
利用python实现周期财务统计可视化
2019/08/25 Python
python命令 -u参数用法解析
2019/10/24 Python
在css3中background-clip属性与background-origin属性的用法介绍
2012/11/13 HTML / CSS
html5应用缓存_动力节点Java学院整理
2017/07/13 HTML / CSS
Eastbay官网:美国最大的运动鞋网络零售商
2016/07/27 全球购物
亚马逊西班牙购物网站:amazon西班牙
2017/03/06 全球购物
英国皇家邮政海外旗舰店:Royal Mail
2018/02/21 全球购物
编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
2014/01/07 面试题
优秀语文教师事迹
2014/05/18 职场文书
出生医学证明书
2014/09/15 职场文书
SpringBoot整合MongoDB的实现步骤
2021/06/23 MongoDB
html解决浏览器记住密码输入框的问题
2023/05/07 HTML / CSS