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的分页功能
Mar 21 PHP
php flv视频时间获取函数
Jun 29 PHP
让PHP以ROOT权限执行系统命令的方法
Feb 10 PHP
PHP字符串的编码问题的详细介绍
Apr 27 PHP
php实现字符串首字母转换成大写的方法
Mar 17 PHP
php实现的RSS生成类实例
Apr 23 PHP
100多行PHP代码实现socks5代理服务器[2]
May 05 PHP
基于php(Thinkphp)+jquery 实现ajax多选反选不选删除数据功能
Feb 24 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
Jun 13 PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
Sep 29 PHP
laravel 数据验证规则详解
Oct 23 PHP
phpstudy2020搭建站点的实现示例
Oct 30 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
天使彦史上最神还原,性别曝光的那一刻,百万网友恋爱了
2020/03/02 国漫
PHP抽象类 介绍
2012/06/13 PHP
php生成短域名函数
2015/03/23 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
2017/03/16 PHP
PHP 实现 JSON 数据的编码和解码操作详解
2020/04/22 PHP
JavaScript 组件之旅(一)分析和设计
2009/10/28 Javascript
全面解析Bootstrap手风琴效果
2020/04/17 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
2016/01/08 Javascript
在windows上用nodejs搭建静态文件服务器的简单方法
2016/08/11 NodeJs
基于Three.js插件制作360度全景图
2016/11/29 Javascript
jquery uploadify隐藏上传进度的实现方法
2017/02/06 Javascript
详解angular笔记路由之angular-router
2017/09/12 Javascript
微信小程序之GET请求的实例详解
2017/09/29 Javascript
vue.js,ajax渲染页面的实例
2018/02/11 Javascript
js中如何完美的解析数据
2018/03/18 Javascript
jQuery滚动条美化插件nicescroll简单用法示例
2018/04/18 jQuery
开发一个Parcel-vue脚手架工具(详细步骤)
2018/09/22 Javascript
vue-router权限控制(简单方式)
2018/10/29 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
2019/11/06 Javascript
vue-element-admin 菜单标签失效的解决方式
2019/11/12 Javascript
JavaScript的变量声明与声明提前用法实例分析
2019/11/26 Javascript
echarts实现折线图的拖拽效果
2019/12/19 Javascript
介绍Python中的fabs()方法的使用
2015/05/14 Python
pandas 取出表中一列数据所有的值并转换为array类型的方法
2018/04/11 Python
Django实现支付宝付款和微信支付的示例代码
2018/07/25 Python
JSON文件及Python对JSON文件的读写操作
2018/10/07 Python
Python中Numpy mat的使用详解
2019/05/24 Python
详解Python绘图Turtle库
2019/10/12 Python
基于pytorch中的Sequential用法说明
2020/06/24 Python
使用css3制作登录表单的步骤
2014/04/07 HTML / CSS
俄罗斯茶和咖啡网上商店:Tea.ru
2021/01/26 全球购物
桥梁与隧道工程专业本科生求职信
2013/10/08 职场文书
企业安全生产责任书
2014/04/14 职场文书
小学节能减排倡议书
2014/05/15 职场文书
项目建议书怎么写
2014/05/15 职场文书
2014年手术室工作总结
2014/11/26 职场文书