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 相关文章推荐
adodb与adodb_lite之比较
Dec 31 PHP
php URL跳转代码 减少外链
Jun 25 PHP
PHP数组排序之sort、asort与ksort用法实例
Sep 08 PHP
深入理解php printf() 输出格式化的字符串
May 23 PHP
详谈PHP程序Laravel 5框架的优化技巧
Jul 18 PHP
php结合md5的加密解密算法实例
Sep 30 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
Feb 08 PHP
php获取给定日期相差天数的方法分析
Feb 20 PHP
PHP实现的数独求解问题示例
Apr 18 PHP
Laravel5.* 打印出执行的sql语句的方法
Jul 24 PHP
PHP memcache在微信公众平台的应用方法示例
Sep 13 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 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通过字符串调用函数示例
2014/03/02 PHP
php中cookie的使用方法
2014/03/29 PHP
php站内搜索关键词变亮的实现方法
2014/12/30 PHP
PHP设计模式之模板方法模式定义与用法详解
2018/04/02 PHP
YII2框架中behavior行为的理解与使用方法示例
2020/03/13 PHP
JS实现程序暂停与继续功能代码解读
2013/10/10 Javascript
js使用正则实现ReplaceAll全部替换的方法
2014/08/22 Javascript
AngularJS中实现动画效果的方法
2016/07/28 Javascript
JavaScript观察者模式(publish/subscribe)原理与实现方法
2017/03/30 Javascript
JS实现的简单表单验证功能示例
2017/10/13 Javascript
react-router4 配合webpack require.ensure 实现异步加载的示例
2018/01/18 Javascript
移动端图片上传旋转、压缩问题的方法
2018/10/16 Javascript
JavaScript根据json生成html表格的示例代码
2018/10/24 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
2018/11/13 Javascript
javascript中可能用得到的全部的排序算法
2020/03/05 Javascript
VUE子组件向父组件传值详解(含传多值及添加额外参数场景)
2020/09/01 Javascript
[02:52]2017DOTA2国际邀请赛中国区预选赛晋级之路
2017/07/03 DOTA
python黑魔法之编码转换
2016/01/25 Python
python通过getopt模块如何获取执行的命令参数详解
2017/12/29 Python
Python3.6连接Oracle数据库的方法详解
2018/05/18 Python
Python获取系统所有进程PID及进程名称的方法示例
2018/05/24 Python
Python基于分析Ajax请求实现抓取今日头条街拍图集功能示例
2018/07/19 Python
Django中使用session保持用户登陆连接的例子
2019/08/06 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
2020/05/13 Python
Anaconda详细安装步骤图文教程
2020/11/12 Python
详解canvas多边形(蜘蛛图)的画法示例
2018/01/29 HTML / CSS
如何使用amaze ui的分页样式封装一个通用的JS分页控件
2020/08/21 HTML / CSS
英国演唱会订票网站:Ticket Selection
2018/03/27 全球购物
北美Newegg打造的全球尖货海购平台:tt海购
2018/09/28 全球购物
美国最大的电子宠物训练产品制造商:PetSafe
2018/10/12 全球购物
公关关系专员的自我评价分享
2013/11/20 职场文书
大学生个人推荐信范文
2013/11/25 职场文书
优秀团队申报材料
2014/12/26 职场文书
前台接待岗位职责
2015/02/03 职场文书
2019企业文化管理制度范本!
2019/08/06 职场文书
PyQt5爬取12306车票信息程序的实现
2021/05/14 Python