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 相关文章推荐
在IIS上安装PHP4.0正式版
Oct 09 PHP
用php实现的下载css文件中的图片的代码
Feb 08 PHP
解析php中eclipse 用空格替换 tab键
Jun 24 PHP
CodeIgniter使用phpcms模板引擎
Nov 12 PHP
php计算指定目录下文件占用空间的方法
Mar 13 PHP
YII Framework框架教程之安全方案详解
Mar 14 PHP
微信自定义菜单的创建/查询/取消php示例代码
Aug 05 PHP
PHP面向对象学习之parent::关键字
Jan 18 PHP
实例解析php的数据类型
Oct 24 PHP
laravel框架创建授权策略实例分析
Nov 22 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
Dec 20 PHP
XAMPP升级PHP版本实现步骤解析
Sep 04 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如何透过ODBC来存取数据库
2006/10/09 PHP
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
2009/10/11 PHP
PHP遍历并打印指定目录下所有文件实例
2014/02/10 PHP
PHP浮点数精度问题汇总
2015/05/13 PHP
详谈php中 strtr 和 str_replace 的效率问题
2017/05/14 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
PHP基于PDO扩展操作mysql数据库示例
2018/12/24 PHP
jquery ajax return没有返回值的解决方法
2011/10/20 Javascript
javascript中负数算术右移、逻辑右移的奥秘探索
2013/10/17 Javascript
JS获取URL中的参数数据
2013/12/05 Javascript
jQuery .tmpl() 用法示例介绍
2014/08/21 Javascript
JavaScript实现检查页面上的广告是否被AdBlock屏蔽了的方法
2014/11/03 Javascript
javascript 实现文本使用省略号替代(超出固定高度的情况)
2017/02/21 Javascript
20行JS代码实现网页刮刮乐效果
2017/06/23 Javascript
Node.JS更改Windows注册表Regedit的方法小结
2017/08/18 Javascript
Vue0.1的过滤代码如何添加到Vue2.0直接使用
2017/08/23 Javascript
jQuery实现倒计时功能 jQuery实现计时器功能
2017/09/19 jQuery
vue单文件组件lint error自动fix与styleLint报错自动fix详解
2019/01/08 Javascript
JavaScript实现移动端弹窗后禁止滚动
2020/05/25 Javascript
Vue两种组件类型:递归组件和动态组件的用法
2020/08/06 Javascript
JavaScript实现瀑布流布局的3种方式
2020/12/27 Javascript
[36:33]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.29
2020/12/02 DOTA
python执行shell获取硬件参数写入mysql的方法
2014/12/29 Python
举例讲解Django中数据模型访问外键值的方法
2015/07/21 Python
Python中将两个或多个list合成一个list的方法小结
2019/05/12 Python
Python学习笔记之读取文件、OS模块、异常处理、with as语法示例
2019/06/04 Python
python交易记录整合交易类详解
2019/07/03 Python
python hough变换检测直线的实现方法
2019/07/12 Python
python使用matplotlib绘制雷达图
2019/10/18 Python
Selenium元素定位的30种方式(史上最全)
2020/05/11 Python
详解pyinstaller生成exe的闪退问题解决方案
2020/06/19 Python
CSS3动画和HTML5新特性详解
2020/08/31 HTML / CSS
物流仓管员岗位职责
2013/12/04 职场文书
关于运动会的广播稿
2014/09/22 职场文书
2014年体育教师工作总结
2014/12/03 职场文书
Win11远程连接不上怎么办?Win11远程桌面用不了的解决方法
2022/08/05 数码科技