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错误级别的设置方法
Jun 17 PHP
php5.3 注意事项说明
Jul 01 PHP
php用正则表达式匹配URL的简单方法
Nov 12 PHP
PHP冒泡算法详解(递归实现)
Nov 10 PHP
使用PHP Socket 编程模拟Http post和get请求
Nov 25 PHP
php操作(删除,提取,增加)zip文件方法详解
Mar 12 PHP
PHP版本常用的排序算法汇总
Dec 20 PHP
学习PHP Cookie处理函数
Aug 09 PHP
PHP Ajax实现无刷新附件上传
Aug 17 PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
Jul 10 PHP
PHP递归统计系统中代码行数
Sep 19 PHP
关于PHP求解三数之和问题详析
Nov 09 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中将地址生成迅雷快车旋风链接的代码[测试通过]
2011/04/20 PHP
PHP中使用crypt()实现用户身份验证的代码
2012/09/05 PHP
处理单名多值表单的详解
2013/06/08 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
2013/08/09 PHP
php在linux下检测mysql同步状态的方法
2015/01/15 PHP
PDO防注入原理分析以及注意事项
2015/02/25 PHP
laravel Model 执行事务的实现
2019/10/10 PHP
JS对URL字符串进行编码/解码分析
2008/10/25 Javascript
Ext面向对象开发实践(续)
2008/11/18 Javascript
js下拉菜单语言选项简单实现
2013/09/23 Javascript
浏览器的JavaScript引擎的识别方法
2013/10/20 Javascript
AngularJS手动表单验证
2016/02/01 Javascript
基于JavaScript实现瀑布流效果
2017/03/29 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
jQuery实现动态添加节点与遍历节点功能示例
2017/11/09 jQuery
JS+WCF实现进度条实时监测数据加载量的方法详解
2017/12/19 Javascript
node puppeteer(headless chrome)实现网站登录
2018/05/09 Javascript
vue实现输入框的模糊查询的示例代码(节流函数的应用场景)
2019/09/01 Javascript
浅谈Vue2.4.0 $attrs与inheritAttrs的具体使用
2020/03/08 Javascript
[46:47]完美世界DOTA2联赛PWL S2 FTD vs Magma 第二场 11.20
2020/11/23 DOTA
[06:57]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD 选手采访
2021/03/11 DOTA
python tools实现视频的每一帧提取并保存
2020/03/20 Python
python3获取当前目录的实现方法
2019/07/29 Python
在python中计算ssim的方法(与Matlab结果一致)
2019/12/19 Python
对python中arange()和linspace()的区别说明
2020/05/03 Python
Python基于unittest实现测试用例执行
2020/11/25 Python
曼城官方网上商店:Manchester City
2019/09/10 全球购物
进程的查看和调度分别使用什么命令
2015/03/25 面试题
财务部岗位职责
2015/02/03 职场文书
电影小兵张嘎观后感
2015/06/03 职场文书
生死抉择观后感
2015/06/09 职场文书
英文投诉信格式
2015/07/03 职场文书
儿童诗两首教学反思
2016/02/23 职场文书
90行Python代码开发个人云盘应用
2021/04/20 Python
Android自定义scrollview实现回弹效果
2022/04/01 Java/Android
python实现双向链表原理
2022/05/25 Python