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完整的日历类(CLASS)
Nov 27 PHP
PHP 文件扩展名 获取函数
Jun 03 PHP
PHP中全面阻止SQL注入式攻击分析小结
Jan 30 PHP
支持中文、字母、数字的PHP验证码
May 04 PHP
php里array_work用法实例分析
Jul 13 PHP
PHP获取当前文件的父目录方法汇总
Jul 21 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
Jul 19 PHP
详解PHP发送邮件知识点
May 06 PHP
thinkPHP5框架闭包函数与子查询传参用法示例
Aug 02 PHP
PHP实现常用排序算法的方法
Feb 05 PHP
PHP程序守护进程化实现方法详解
Jul 16 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+MYSQL的文章管理系统(一)
2006/10/09 PHP
php 调用远程url的六种方法小结
2009/11/02 PHP
php准确获取文件MIME类型的方法
2015/06/17 PHP
Yii2前后台分离及migrate使用(七)
2016/05/04 PHP
PHP批量修改文件名称的方法分析
2017/02/27 PHP
PHP保存Base64图片base64_decode的问题整理
2019/11/04 PHP
jQuery滚动加载图片效果的实现
2013/03/06 Javascript
jQuery中get()方法用法实例
2014/12/27 Javascript
招聘网站基于jQuery实现自动刷新简历
2015/05/10 Javascript
nodejs利用ajax实现网页无刷新上传图片实例代码
2017/06/06 NodeJs
JS运动特效之完美运动框架实例分析
2018/01/24 Javascript
Vue动态获取width的方法
2018/08/22 Javascript
vue 集成 vis-network 实现网络拓扑图的方法
2019/08/07 Javascript
vue vant Area组件使用详解
2019/12/09 Javascript
原生js实现拖拽移动与缩放效果
2020/08/24 Javascript
Python列表和元组的定义与使用操作示例
2017/07/26 Python
python django 增删改查操作 数据库Mysql
2017/07/27 Python
Python使用Shelve保存对象方法总结
2019/01/28 Python
python图形开发GUI库wxpython使用方法详解
2020/02/14 Python
Python垃圾回收机制三种实现方法
2020/04/27 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
2020/11/18 Python
Stuart Weitzman美国官网:美国奢华鞋履品牌
2016/08/18 全球购物
桥梁与隧道工程专业本科生求职信
2013/10/08 职场文书
一份婚庆公司创业计划书
2014/01/11 职场文书
《小动物过冬》教学反思
2014/04/17 职场文书
文秘个人求职信范文
2014/04/22 职场文书
学校门卫岗位职责范本
2014/06/30 职场文书
中国文明网向国旗敬礼活动精彩寄语2014
2014/09/27 职场文书
教师党员学习群众路线心得体会
2014/11/04 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
2015暑期社会实践调查报告
2015/07/14 职场文书
2016年“我们的节日·重阳节”主题活动总结
2016/04/01 职场文书
创业计划书之旅游网站
2019/09/06 职场文书
用Python简陋模拟n阶魔方
2021/04/17 Python
在Python中如何使用yield
2021/06/07 Python
全网非常详细的pytest配置文件
2022/07/15 Python