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+mysql扎实个人基本功
Mar 27 PHP
使用PHP获取当前url路径的函数以及服务器变量
Jun 29 PHP
php权重计算方法代码分享
Jan 09 PHP
PHP常用的缓存技术汇总
May 05 PHP
CodeIgniter错误mysql_connect(): No such file or directory解决方法
Sep 06 PHP
smarty模板引擎从php中获取数据的方法
Jan 22 PHP
PHPStrom中实用的功能和快捷键大全
Sep 23 PHP
PHP编写daemon process 实例详解
Nov 13 PHP
php读取qqwry.dat ip地址定位文件的类实例代码
Nov 15 PHP
详谈PHP面向对象中常用的关键字和魔术方法
Feb 04 PHP
在laravel框架中实现封装公共方法全局调用
Oct 14 PHP
php+mysql实现的无限分类方法类定义与使用示例
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版微信公众平台红包API
2015/04/02 PHP
php实现点击可刷新验证码
2015/11/07 PHP
Symfony2安装的方法(2种方法)
2016/02/04 PHP
thinkPHP订单数字提醒功能的实现方法
2016/12/01 PHP
golang、python、php、c++、c、java、Nodejs性能对比
2017/03/12 NodeJs
用jquery写的一个万年历(自写)
2014/01/20 Javascript
jQuery中slideUp 和 slideDown 的点击事件
2015/02/26 Javascript
jQuery选择器源码解读(七):elementMatcher函数
2015/03/31 Javascript
javascript基于DOM实现省市级联下拉框的方法
2015/05/14 Javascript
jquery mobile 移动web(5)
2015/12/20 Javascript
纯JS实现弹性导航条效果
2017/03/06 Javascript
Textarea输入字数限制实例(兼容iOS&amp;安卓)
2017/07/06 Javascript
JS实现数组去重方法总结(六种方法)
2017/07/14 Javascript
AngularJS实现图片上传和预览功能的方法分析
2017/11/08 Javascript
Vue精简版风格概述
2018/01/30 Javascript
JavaScript函数节流和函数去抖知识点学习
2018/07/31 Javascript
在NPM发布自己造的轮子的方法步骤
2019/03/09 Javascript
JS实现选项卡效果的代码实例
2019/05/20 Javascript
解决Echarts 显示隐藏后宽度高度变小的问题
2020/07/19 Javascript
[03:38]TI4西雅图DOTA2前线报道 71专访
2014/07/08 DOTA
Python删除指定目录下过期文件的2个脚本分享
2014/04/10 Python
python 自定义异常和异常捕捉的方法
2018/10/18 Python
python进行TCP端口扫描的实现
2018/12/21 Python
Python+PyQt5实现灭霸响指功能
2020/05/25 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
2020/08/07 Python
pycharm中leetcode插件使用图文详解
2020/12/07 Python
纯css3实现的竖形无限级导航
2014/12/10 HTML / CSS
英国最大的邮寄种子和植物公司:Thompson & Morgan
2017/09/21 全球购物
切尔西足球俱乐部官方网上商店:Chelsea FC
2019/06/17 全球购物
CAD制图人员的自荐信
2014/02/07 职场文书
党的群众路线教育实践活动宣传方案
2014/02/23 职场文书
《数星星的孩子》教学反思
2014/04/11 职场文书
神秘岛读书笔记
2015/07/01 职场文书
转变工作作风心得体会
2016/01/23 职场文书
python析构函数用法及注意事项
2021/06/22 Python