2019独角兽企业重金招聘Python工程师标准>>>

<?php
//获取文件列表
function list_dir($dir){$result = array();if (is_dir($dir)){$file_dir = scandir($dir);foreach($file_dir as $file){if ($file == '.' || $file == '..'){continue;}elseif (is_dir($dir.$file)){$result = array_merge($result, list_dir($dir.$file.'/'));}else{array_push($result, $dir.$file);}}}return $result;}//获取列表
$datalist=list_dir('../');
$filename = "./bak.zip"; //最终生成的文件名(含路径)
if(!file_exists($filename)){
//重新生成文件   $zip = new ZipArchive();//使用本类,linux需开启zlib,windows需取消php_zip.dll前的注释   if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {   exit('无法打开文件,或者文件创建失败');}   foreach( $datalist as $val){   if(file_exists($val)){   $zip->addFile( $val, basename($val));//第二个参数是放在压缩包中的文件名称,如果文件可能会有重复,就需要注意一下   }   }   $zip->close();//关闭
}
if(!file_exists($filename)){   exit("无法找到文件"); //即使创建,仍有可能失败。。。。
}
header("Cache-Control: public");
header("Content-Description: File Transfer");
header('Content-disposition: attachment; filename='.basename($filename)); //文件名
header("Content-Type: application/zip"); //zip格式的
header("Content-Transfer-Encoding: binary"); //告诉浏览器,这是二进制文件
header('Content-Length: '. filesize($filename)); //告诉浏览器,文件大小
@readfile($filename);
?>

PHP ZipArchive是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP扩展已经开启,具体开启方法这里就不说了,不同的平台开启PHP扩增的方法网上都有,如有疑问欢迎交流。这里整理一下利用php zipArchive进行文件的压缩与解压缩的常用的示例供参考。

一、解压缩zip文件

$zip=new ZipArchive;//新建一个ZipArchive的对象if($zip->open('test.zip')===TRUE){$zip->extractTo('images');//假设解压缩到在当前路径下images文件夹内$zip->close();//关闭处理的zip文件
}

二、将文件压缩成zip文件

$zip=new ZipArchive;
if($zip->open('test.zip',ZipArchive::OVERWRITE)===TRUE){$zip->addFile('image.txt');//假设加入的文件名是image.txt,在当前路径下$zip->close();
}

三、文件追加内容添加到zip文件

$zip=new ZipArchive;
$res=$zip->open('test.zip',ZipArchive::CREATE);
if($res===TRUE){$zip->addFromString('test.txt','file content goes here');$zip->close();echo 'ok';
}else{echo 'failed';
}

四、将文件夹打包成zip文件

function addFileToZip($path,$zip){$handler=opendir($path); //打开当前文件夹由$path指定。while(($filename=readdir($handler))!==false){if($filename != "." &amp;&amp; $filename != ".."){//文件夹文件名字为'.'和‘..’,不要对他们进行操作if(is_dir($path."/".$filename)){// 如果读取的某个对象是文件夹,则递归addFileToZip($path."/".$filename, $zip);}else{ //将文件加入zip对象$zip->addFile($path."/".$filename);}}}@closedir($path);
}
$zip=new ZipArchive();
if($zip->open('images.zip', ZipArchive::OVERWRITE)=== TRUE){addFileToZip('images/', $zip); //调用方法,对要打包的根目录进行操作,并将ZipArchive的对象传递给方法$zip->close(); //关闭处理的zip文件
}

转载于:https://my.oschina.net/china008/blog/392014

使用PHP自带zlib函数 几行代码实现PHP文件打包下载zip相关推荐

  1. php本地文件打包代码,PHP实战:几行代码轻松实现PHP文件打包下载zip

    <PHP实战:几行代码轻松实现PHP文件打包下载zip>要点: 本文介绍了PHP实战:几行代码轻松实现PHP文件打包下载zip,希望对您有用.如果有疑问,可以联系我们. PHP应用 //获 ...

  2. python 数据比对 函数_1行代码实现Python数据分析:图表美观清晰,自带对比功能丨开源...

    原标题:1行代码实现Python数据分析:图表美观清晰,自带对比功能丨开源

  3. 带你用4行代码训练RNN生成文本(附资源)

    作者:马修·梅奥,科德那金 翻译:陈之炎 校对:丁楠雅 本文共1400字,建议阅读6分钟. 本文介绍仅需几行代码就能训练出任意大小和复杂度的文本的神经网络文本发生器. 如何在无需构建和调整神经网络的情 ...

  4. 一个函数有多少行代码比较合适?

    要看功能,如果一个方法可以分成好多个子功能的话尽量将其抽取出来作为单独的方法,曾经重构过好多这样的代码,不是写代码的人水平低,主要还是不负责,懒得多想. 个人觉得函数的写法应该遵循以下两点基本的原则: ...

  5. @excel 注解_7 行代码实现 Excel 文件导出

    作 者:犬小哈 来 源:首发自「小哈学Java」 广而告之:由于此订阅号换了个皮肤,系统自动取消了读者的公众号置顶.导致用户接受文章不及时.可以打开订阅号,选择置顶(标星)公众号,重磅干货,第一时间送 ...

  6. python80行代码写一个文件整理软件

    在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 源代码: #–coding:utf-8– from PySide2.QtWidgets import QApplication, QMain ...

  7. 爬虫入门,带你用30行代码爬取高清美女写真,附安装包+源码

    1.准备工作 1 高清壁纸:https://www.36992.com/girls/list-1.html 2 Python环境 Python3.9新特性: 字典"并集"运算符 类 ...

  8. Python+moviepy使用manual_tracking和headblur函数10行代码实现视频人脸追踪打马赛克

    ☞ ░ 前往老猿Python博文目录 ░ 一.背景知识 1.1.headblur简介 追踪人脸打马赛克需要使用headblur函数. 调用语法: headblur(clip,fx,fy,r_zone, ...

  9. python可以制作网站吗_Python大神带你用30行代码打造一个网站,爬虫+web不一样的玩法...

    首先,先把实际的效果图放上来: 用Python做的个性签名网站-效果图 在开始做之前,我们必须得知道这个用了那些模块: flask:一个轻量级的web开发框架,相信很多人也听说过这个牛逼加简洁的框架 ...

最新文章

  1. Pandas 基础 (1)—— Series
  2. javascript Array方法总结
  3. oracle ebs form视频,ORACLE EBS FORM利用模板开发步骤
  4. 视频私有云实战:基于Docker构建点播私有云平台
  5. Linux下安装Apache Maven安装
  6. [android源码分析]sdp Server的启动分析
  7. 卡车紧急刹车加强系统(发明畅想)
  8. 树与二叉树 | 平衡二叉树
  9. log4cpp乱码_log4cxx配置使用(一)
  10. 南京市建筑物矢量数据(Shp格式+带高度)
  11. smarty模版手册
  12. Ribbon界面介绍(1)
  13. Asterisk增加g729编码支持
  14. 马斯克入驻推特造成大恐慌!这俩戏精还冒充被裁员工,外媒全被耍了
  15. 郭天祥 十天搞定单片机 (2)流水灯+蜂鸣器+调试
  16. 联通手机服务器密码怎么修改,联通宽带手机修改wifi密码
  17. B2B2C 商城系统 WSTMart_v2.0.6_180726程序发布
  18. P2135 方块消除
  19. python 网格交易源码_网格交易策略[tb源码]
  20. 艾瑞泽5无损换挡机构

热门文章

  1. 专设AI周会 高管悉数到场 微软CEO有多重视人工智能?
  2. 牛津大学计算机系主任:人工智能立法重在抓机遇、防危害
  3. DeepMind集成AI智能体架构「MERLIN」:基于目标导向智能体中的无监督预测记忆
  4. 普华永道2030汽车产业报告 私家车真正Out了!
  5. 如何搞垮一个技术大牛?
  6. P4145 上帝造题的七分钟2 / 花神游历各国(线段树区间开平方)
  7. 【洛谷 P2464】[SDOI2008]郁闷的小J(线段树)
  8. How React Works (一)首次渲染
  9. IntelliJ IDEA注册码
  10. 【旧文新读】解释“闭包”需要几行代码?