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文件下载类
Dec 06 PHP
PHP 图片上传实现代码 带详细注释
Apr 29 PHP
php删除数组元素示例分享
Feb 17 PHP
ThinkPHP3.1新特性之多数据库操作更加完善
Jun 19 PHP
php实现读取内存顺序号
Mar 29 PHP
PHP对称加密函数实现数据的加密解密
Oct 27 PHP
PHP下 Mongodb 连接远程数据库的实例代码
Aug 30 PHP
php制作圆形用户头像的实例_自定义封装类源代码
Sep 18 PHP
详解thinkphp中的volist标签
Jan 15 PHP
PHP多线程模拟实现秒杀抢单
Feb 07 PHP
实例介绍PHP中zip_open()函数用法
Feb 15 PHP
PHP预定义接口――Iterator用法示例
Jun 05 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
ADODB的数据库封包程序库
2006/12/31 PHP
php xml留言板 xml存储数据的简单例子
2009/08/24 PHP
Yii2隐藏frontend/web和backend/web的方法
2015/12/12 PHP
php将print_r处理后的数据还原为原始数组的解决方法
2016/11/02 PHP
使用CSS3实现字体颜色渐变的实现
2021/03/09 HTML / CSS
一个页面元素appendchild追加到另一个页面元素的问题
2013/01/27 Javascript
javascript中数组的定义及使用实例
2015/01/21 Javascript
JS实现的生成随机数的4个函数分享
2015/02/11 Javascript
jquery获取当前元素索引值用法实例
2015/06/10 Javascript
js仿黑客帝国字母掉落效果代码分享
2020/11/08 Javascript
JavaScript的removeChild()函数用法详解
2015/12/27 Javascript
jQuery滚动监听实现商城楼梯式导航效果
2017/03/06 Javascript
在vue2.0中引用element-ui组件库的方法
2018/06/21 Javascript
vue中格式化时间过滤器代码实例
2019/04/17 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
2019/10/17 Javascript
原生Vue 实现右键菜单组件功能
2019/12/16 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
2020/04/20 Javascript
详解ES6 扩展运算符的使用与注意事项
2020/11/12 Javascript
Python的ORM框架中SQLAlchemy库的查询操作的教程
2015/04/25 Python
关于Flask项目无法使用公网IP访问的解决方式
2019/11/19 Python
检测tensorflow是否使用gpu进行计算的方式
2020/02/03 Python
Python多重继承之菱形继承的实例详解
2020/02/12 Python
Numpy一维线性插值函数的用法
2020/04/22 Python
通俗讲解python 装饰器
2020/09/07 Python
python定时截屏实现
2020/11/02 Python
python lambda的使用详解
2021/02/26 Python
详解CSS3媒体查询响应式布局bootstrap 框架原理实战(推荐)
2020/11/16 HTML / CSS
AmazeUI框架搭建的方法步骤(图文)
2020/08/17 HTML / CSS
RetroStage德国:复古服装
2019/02/03 全球购物
数学国培研修感言
2014/02/13 职场文书
《母鸡》教学反思
2014/02/25 职场文书
反腐倡廉警示教育活动总结
2014/05/05 职场文书
2015年实习单位评语
2015/03/25 职场文书
2015教师个人工作总结范文
2015/03/31 职场文书
毕业证明书
2015/06/19 职场文书
Django debug为True时,css加载失败的解决方案
2021/04/24 Python