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 06 PHP
PHP 根据IP地址控制访问的代码
Apr 22 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
Jul 02 PHP
php中拷贝构造函数、赋值运算符重载
Jul 25 PHP
php截取字符串并保留完整xml标签的函数代码
Feb 06 PHP
解析PHP无限级分类方法及代码
Jun 21 PHP
php利用反射实现插件机制的方法
Mar 14 PHP
thinkphp3.x中变量的获取和过滤方法详解
May 20 PHP
在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
Apr 09 PHP
PHP使用Redis实现Session共享的实现示例
May 12 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
Sep 02 PHP
php+websocket 实现的聊天室功能详解
May 27 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为表单获取的URL 地址预设 http 字符串函数代码
2010/05/26 PHP
PHP的PSR规范中文版
2013/09/28 PHP
Drupal7中常用的数据库操作实例
2014/03/02 PHP
Jquery创建一个层当鼠标移动到层上面不消失效果
2013/12/12 Javascript
js验证电话号码与手机支持+86的正则表达式
2014/01/23 Javascript
iframe的onreadystatechange事件在firefox下的使用
2014/04/16 Javascript
详谈nodejs异步编程
2014/12/04 NodeJs
jquery实现增加删除行的方法
2015/02/03 Javascript
简介JavaScript中的setTime()方法的使用
2015/06/11 Javascript
Node.js中npm常用命令大全
2016/06/09 Javascript
jQuery自适应轮播图插件Swiper用法示例
2016/08/24 Javascript
JS在浏览器中解析Base64编码图像
2017/02/09 Javascript
Node.js常用工具之util模块
2017/03/09 Javascript
js学习总结之dom2级事件基础知识详解
2017/07/27 Javascript
详解Vue2中组件间通信的解决全方案
2017/07/28 Javascript
详解在create-react-app使用less与antd按需加载
2018/12/06 Javascript
基于vue通用表单解决方案的思考与分析
2019/03/16 Javascript
详解nodejs http请求相关总结
2019/03/31 NodeJs
解决layui弹出层layer的area过大被遮挡的问题
2019/09/21 Javascript
vue 组件内获取actions的response方式
2019/11/08 Javascript
vue中实现高德定位功能
2019/12/03 Javascript
js实现时间日期校验
2020/05/26 Javascript
Vue清除定时器setInterval优化方案分享
2020/07/21 Javascript
全面解析Python的While循环语句的使用方法
2015/10/13 Python
python清理子进程机制剖析
2017/11/23 Python
Python3实现腾讯云OCR识别
2018/11/27 Python
对python3 中方法各种参数和返回值详解
2018/12/15 Python
python调用百度地图WEB服务API获取地点对应坐标值
2019/01/16 Python
耐克奥地利官网:Nike奥地利
2019/08/16 全球购物
利物浦足球俱乐部官方商店(美国):Liverpool FC US
2019/10/09 全球购物
软件测试工程师面试问题精选
2016/10/28 面试题
财务分析个人的自荐书范文
2013/11/24 职场文书
学习型党组织建设经验材料
2014/05/26 职场文书
公司应聘自荐书
2014/06/14 职场文书
无财产离婚协议书范本
2014/10/28 职场文书
Tomcat弱口令复现及利用
2022/05/06 Servers