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 特殊字符处理函数
Sep 05 PHP
PHP遍历二维数组的代码
Apr 22 PHP
PHP文件打开、关闭、写入的判断与执行代码
May 24 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
Jul 03 PHP
PHP递归返回值时出现的问题解决办法
Feb 19 PHP
CodeIgniter错误mysql_connect(): No such file or directory解决方法
Sep 06 PHP
php获取QQ头像并显示的方法
Dec 23 PHP
浅谈关于PHP解决图片无损压缩的问题
Sep 01 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
Nov 17 PHP
PHP实现的超长文本分页显示功能示例
Jun 04 PHP
PHP聊天室简单实现方法详解
Dec 08 PHP
PHP模版引擎原理、定义与用法实例
Mar 29 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
《星际争霸2》终章已出 RTS时代宣告终结
2017/02/07 星际争霸
mysql下创建字段并设置主键的php代码
2010/05/16 PHP
PHPMailer的主要功能特点和简单使用说明
2014/02/17 PHP
微信公众号点击菜单即可打开并登录微站的实现方法
2014/11/14 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
JQuery 应用 JQuery.groupTable.js
2010/12/15 Javascript
javascript中typeof的使用示例
2013/12/19 Javascript
针对BootStrap中tabs控件的美化和完善(推荐)
2016/07/06 Javascript
vue加载自定义的js文件方法
2018/03/13 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
js中null与空字符串&quot;&quot;的区别讲解
2019/01/17 Javascript
微信小程序 checkbox使用实例解析
2019/09/09 Javascript
JS 数组和对象的深拷贝操作示例
2020/06/06 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
2020/11/10 Javascript
[04:16]DOTA2英雄梦之声_第09期_斧王
2014/06/21 DOTA
[15:15]教你分分钟做大人:狙击手
2014/10/30 DOTA
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
利用Python找出序列中出现最多的元素示例代码
2017/12/08 Python
python字符串常用方法
2018/06/14 Python
python: 自动安装缺失库文件的方法
2018/10/22 Python
Python实现动态给类和对象添加属性和方法操作示例
2020/02/29 Python
Django 构建模板form表单的两种方法
2020/06/14 Python
Python3实现建造者模式的示例代码
2020/06/28 Python
AJAX的优缺点都有什么
2015/08/18 面试题
学前教育毕业生自荐信
2013/10/29 职场文书
上班睡觉检讨书
2014/01/09 职场文书
股东协议书
2014/04/14 职场文书
会员活动策划方案
2014/08/19 职场文书
教师节倡议书
2014/08/30 职场文书
学党史心得体会
2014/09/05 职场文书
公司委托书范本5篇
2014/09/20 职场文书
行政助理岗位职责范本
2015/04/11 职场文书
教你使用TensorFlow2识别验证码
2021/06/11 Python
CSS基础详解
2021/10/16 HTML / CSS
Win11运行cmd提示“请求的操作需要提升”的两种解决方法
2022/07/07 数码科技