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入门速成教程
Mar 19 PHP
优化PHP代码的53条建议
Mar 27 PHP
php获取当前网址url并替换参数或网址的方法
Jun 06 PHP
将博客园(cnblogs.com)数据导入到wordpress的代码
Jan 06 PHP
php计算两个日期相差天数的方法
Mar 14 PHP
php恢复数组的key为数字序列的方法
Apr 28 PHP
fckeditor上传文件按日期存放及重命名方法
May 22 PHP
Yii中Model(模型)的创建及使用方法
Dec 28 PHP
PHP基于接口技术实现简单的多态应用完整实例
Apr 26 PHP
PHP封装的PDO数据库操作类实例
Jun 21 PHP
PHP实现Huffman编码/解码的示例代码
Apr 20 PHP
关于laravel框架中的常用目录路径函数
Oct 23 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简单获取上月、本月、近15天、近30天的方法示例
2017/07/03 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
2020/06/03 PHP
JQuery实现超链接鼠标提示效果的方法
2015/06/10 Javascript
JS实现的N多简单无缝滚动代码(包含图文效果)
2015/11/06 Javascript
Javascript的比较汇总
2016/07/25 Javascript
JS实现的RGB网页颜色在线取色器完整实例
2016/12/21 Javascript
JavaScript实现无穷滚动加载数据
2017/05/06 Javascript
Vue内容分发slot(全面解析)
2017/08/19 Javascript
vue脚手架中配置Sass的方法
2018/01/04 Javascript
JavaScript设计模式之单例模式简单实例教程
2018/07/02 Javascript
layui 监听select选择 获取当前select的ID名称方法
2019/09/24 Javascript
在项目vue中使用echarts的操作步骤
2020/09/07 Javascript
微信小程序实现签到弹窗动画
2020/09/21 Javascript
vue打开新窗口并实现传参的图文实例
2021/03/04 Vue.js
python 中文乱码问题深入分析
2011/03/13 Python
python抓取网页时字符集转换问题处理方案分享
2014/06/19 Python
Python字符串和字典相关操作的实例详解
2017/09/23 Python
Python设计模式之职责链模式原理与用法实例分析
2019/01/11 Python
对django2.0 关联表的必填on_delete参数的含义解析
2019/08/09 Python
Python 之 Json序列化嵌套类方式
2020/02/27 Python
python+opencv边缘提取与各函数参数解析
2020/03/09 Python
pytorch实现查看当前学习率
2020/06/24 Python
pycharm中leetcode插件使用图文详解
2020/12/07 Python
初探CSS3中的calc()功能
2015/07/14 HTML / CSS
泰国国际航空公司官网:Thai Airways International
2019/12/04 全球购物
新加坡最早生产电动滑板车的制造商之一:FunsToTheFore
2020/09/08 全球购物
公立医院改革实施方案
2014/03/14 职场文书
审计班子对照检查材料
2014/08/27 职场文书
干部作风整顿自我剖析材料和整改措施
2014/09/18 职场文书
公安局负责人查摆问题及整改方案
2014/09/27 职场文书
群众路线个人整改措施
2014/10/24 职场文书
单位未婚证明范本
2014/11/25 职场文书
审查起诉阶段律师意见书
2015/05/19 职场文书
司法廉洁教育心得体会
2016/01/20 职场文书
AJAX实现指定部分页面刷新效果
2021/10/16 Javascript
Python中 range | np.arange | np.linspace三者的区别
2022/03/22 Python