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创建动态图像
Oct 09 PHP
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
Dec 06 PHP
PHP数组实例总结与说明
Aug 23 PHP
php注销代码(session注销)
May 31 PHP
php读取csv实现csv文件下载功能
Dec 18 PHP
zf框架的Filter过滤器使用示例
Mar 13 PHP
php导入大量数据到mysql性能优化技巧
Dec 29 PHP
php表单提交实例讲解
Nov 12 PHP
PHP Callable强制指定回调类型的方法
Aug 30 PHP
PHP高效获取远程图片尺寸和大小的实现方法
Oct 20 PHP
详解PHP中mb_strpos的使用
Feb 04 PHP
PHP时间处理类操作示例
Sep 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
PHP 类商品秒杀计时实现代码
2010/05/05 PHP
php生成的html meta和link标记在body标签里 顶部有个空行
2010/05/18 PHP
PHP在特殊字符前加斜杠的实现代码
2011/07/17 PHP
php使用curl和正则表达式抓取网页数据示例
2014/04/13 PHP
php实例分享之通过递归实现删除目录下的所有文件详解
2014/05/15 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
PHP如何实现订单的延时处理详解
2017/12/30 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
js页面跳转的问题(跳转到父页面、最外层页面、本页面)
2013/08/14 Javascript
JavaScript中的值类型转换介绍
2014/12/31 Javascript
详细解读Jquery各Ajax函数($.get(),$.post(),$.ajax(),$.getJSON())
2016/08/15 Javascript
vue.js学习笔记之绑定style样式和class列表
2016/10/31 Javascript
JS组件系列之MVVM组件构建自己的Vue组件
2017/04/28 Javascript
es6学习笔记之Async函数基本教程
2017/05/11 Javascript
Angular4学习教程之HTML属性绑定的方法
2018/01/04 Javascript
Angular6笔记之封装http的示例代码
2018/07/27 Javascript
vue 弹框产生的滚动穿透问题的解决
2018/09/21 Javascript
vue2.0+vue-router构建一个简单的列表页的示例代码
2019/02/13 Javascript
在vue中created、mounted等方法使用小结
2020/07/21 Javascript
vue数据更新UI不刷新显示的解决办法
2020/08/06 Javascript
JavaScript中的函数式编程详解
2020/08/22 Javascript
用python实现对比两张图片的不同
2018/02/05 Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
2020/02/14 Python
python和node.js生成当前时间戳的示例
2020/09/29 Python
pytorch下的unsqueeze和squeeze的用法说明
2021/02/06 Python
有关HTML5 Video对象的ontimeupdate事件(Chrome上无效)的问题
2013/07/19 HTML / CSS
手把手教你实现一个canvas智绘画板的方法
2019/03/04 HTML / CSS
西班牙灯具网上商店:Lampara.es
2018/06/05 全球购物
英国家喻户晓的家居商店:The Range
2019/03/25 全球购物
乌克兰移动电子产品和相关配件的在线商店:iTMag
2020/03/16 全球购物
医院搬迁方案
2014/06/14 职场文书
酒店优秀员工推荐信
2015/03/24 职场文书
天鹅湖观后感
2015/06/09 职场文书
Redis基本数据类型Set常用操作命令
2022/06/01 Redis
Python如何加载模型并查看网络
2022/07/15 Python