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.NET的入门教程
Oct 09 PHP
php+mysql实现无限级分类 | 树型显示分类关系
Nov 19 PHP
php简单提示框alert封装函数
Aug 08 PHP
PHP中通过语义URL防止网站被攻击的方法分享
Sep 08 PHP
yii2.0之GridView自定义按钮和链接用法
Dec 15 PHP
php实现window平台的checkdnsrr函数
May 27 PHP
培养自己的php编码规范
Sep 28 PHP
配置Nginx+PHP的正确思路与过程
May 10 PHP
PHP实现限制IP访问及提交次数的方法详解
Jul 17 PHP
laravel如何开启跨域功能示例详解
Aug 31 PHP
php链式操作的实现方式分析
Aug 12 PHP
PHP PDO和消息队列的个人理解与应用实例分析
Nov 25 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 类自动载入的方法
2015/06/03 PHP
Thinkphp自定义代码生成工具及用法说明(附下载地址)
2016/05/27 PHP
thinkphp实现分页显示功能
2016/12/03 PHP
php更新cookie内容的详细方法
2019/09/30 PHP
Laravel关系模型指定条件查询方法
2019/10/10 PHP
jquery判断单个复选框是否被选中的代码
2009/09/03 Javascript
JQuery实现倒计时按钮的实现代码
2012/03/23 Javascript
jQuery旋转插件—rotate支持(ie/Firefox/SafariOpera/Chrome)
2013/01/16 Javascript
jquery中$(#form :input)与$(#form input)的区别
2014/08/18 Javascript
js如何实现点击标签文字,文字在文本框出现
2015/08/05 Javascript
vue,angular,avalon这三种MVVM框架优缺点
2016/04/27 Javascript
Boostrap栅格系统与自己额外定义的媒体查询的冲突问题
2017/02/19 Javascript
面试常见的js算法题
2017/03/23 Javascript
Vue2组件tree实现无限级树形菜单
2017/03/29 Javascript
Angular2使用jQuery的方法教程
2017/05/28 jQuery
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
2018/01/20 Javascript
vue-router重定向不刷新问题的解决
2018/06/25 Javascript
纯javascript前端实现base64图片下载(兼容IE10+)
2018/09/14 Javascript
Vue实现小购物车功能
2020/12/21 Vue.js
Python 开发Activex组件方法
2009/11/08 Python
Python实现网站注册验证码生成类
2017/06/08 Python
Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
2017/08/31 Python
Python实现压缩文件夹与解压缩zip文件的方法
2018/09/01 Python
django框架F&amp;Q 聚合与分组操作示例
2019/12/12 Python
python 串口读取+存储+输出处理实例
2019/12/26 Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
2020/03/30 Python
Python实例方法、类方法、静态方法区别详解
2020/09/05 Python
video结合canvas实现视频在线截图功能
2018/06/25 HTML / CSS
NYX Professional Makeup俄罗斯官网:世界知名的化妆品品牌
2019/12/26 全球购物
《最大的“书”》教学反思
2014/02/14 职场文书
中学生寄语大全
2014/04/03 职场文书
《彭德怀和他的大黑骡子》教学反思
2014/04/12 职场文书
离婚协议书范本(2014版)
2014/09/28 职场文书
2015年元旦晚会活动总结(学生会)
2014/11/28 职场文书
慈善献爱心倡议书
2015/04/27 职场文书
Python 线程池模块之多线程操作代码
2021/05/20 Python