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 相关文章推荐
php2html php生成静态页函数
Dec 08 PHP
php文件上传表单摘自drupal的代码
Feb 15 PHP
PHP显示今天、今月、上月、今年的起点/终点时间戳的代码
May 25 PHP
php实现保存submit内容之后禁止刷新
Mar 19 PHP
destoon整合ucenter后注册页面不跳转的解决方法
Jun 21 PHP
PHP中防止SQL注入方法详解
Dec 25 PHP
PHP实现微信发红包程序
Aug 24 PHP
PHP获取不了React Native Fecth参数的解决办法
Aug 26 PHP
Linux服务器下PHPMailer发送邮件失败的问题解决
Mar 04 PHP
Yii1.1中通过Sql查询进行的分页操作方法
Mar 16 PHP
php微信支付之公众号支付功能
May 30 PHP
laravel 中某一字段自增、自减的例子
Oct 11 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
用户的详细注册和判断
2006/10/09 PHP
PHP中几个常用的魔术常量
2012/02/23 PHP
实例讲解PHP面向对象之多态
2014/08/20 PHP
php调整服务器时间的方法
2015/04/03 PHP
Yii2.0高级框架数据库增删改查的一些操作
2015/11/16 PHP
实例讲解如何在PHP的Yii框架中进行错误和异常处理
2016/03/17 PHP
PHP变量的作用范围实例讲解
2020/12/22 PHP
Javascript isArray 数组类型检测函数
2009/10/08 Javascript
js下关于onmouseout、事件冒泡的问题经验小结
2010/12/09 Javascript
js防止页面被iframe调用的方法
2014/10/30 Javascript
JavaScript阻止浏览器返回按钮的方法
2015/03/18 Javascript
JavaScript实现向OL列表内动态添加LI元素的方法
2015/03/21 Javascript
clipboard.js无需Flash无需依赖任何JS库实现文本复制与剪切
2015/10/10 Javascript
BootStrap 页签切换失效的解决方法
2017/08/17 Javascript
vue.js做一个简单的编辑菜谱功能
2018/05/08 Javascript
解决vue-cli项目打包出现空白页和路径错误的问题
2018/09/04 Javascript
图片文字识别(OCR)插件Ocrad.js教程
2018/11/26 Javascript
js笔试题-接收get请求参数
2019/06/15 Javascript
jquery实现手风琴案例
2020/05/04 jQuery
[43:14]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
[01:01:52]完美世界DOTA2联赛PWL S2 GXR vs Magma 第二场 11.25
2020/11/26 DOTA
Python使用xlrd模块操作Excel数据导入的方法
2015/05/26 Python
在Python的Django框架中为代码添加注释的方法
2015/07/16 Python
Python3中简单的文件操作及两个简单小实例分享
2017/06/18 Python
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
详解如何将python3.6软件的py文件打包成exe程序
2018/10/09 Python
Django CBV与FBV原理及实例详解
2019/08/12 Python
解析python的局部变量和全局变量
2019/08/15 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
2020/01/04 Python
python中plt.imshow与cv2.imshow显示颜色问题
2020/07/16 Python
python判断all函数输出结果是否为true的方法
2020/12/03 Python
手摸手教你用canvas实现给图片添加平铺水印的实现
2019/08/20 HTML / CSS
村干部群众路线教育活动对照检查材料
2014/10/01 职场文书
2014年依法行政工作总结
2014/11/19 职场文书
升学宴来宾致辞
2015/07/27 职场文书
win10键盘驱动怎么修复?Win10键盘驱动修复小技巧
2022/04/06 数码科技