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

《PHP实战:几行代码轻松实现PHP文件打包下载zip》要点:

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

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应用PHP ZipArchive是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP扩展已经开启,具体开启方法这里就不说了,不同的平台开启PHP扩增的方法网上都有,如有疑问欢迎交流.

PHP应用这里整理一下利用php zipArchive进行文件的压缩与解压缩的常用的示例供参考.

PHP应用一、解压缩zip文件

PHP应用

$zip=new ZipArchive;//新建一个ZipArchive的对象

if($zip->open('test.zip')===TRUE){

$zip->extractTo('images');//假设解压缩到在当前路径下images文件夹内

$zip->close();//关闭处理的zip文件

}

PHP应用二、将文件压缩成zip文件

PHP应用

$zip=new ZipArchive;

if($zip->open('test.zip',ZipArchive::OVERWRITE)===TRUE){

$zip->addFile('image.txt');//假设加入的文件名是image.txt,在当前路径下

$zip->close();

}

PHP应用三、文件追加内容添加到zip文件

PHP应用

$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';

}

PHP应用四、将文件夹打包成zip文件

PHP应用

function addFileToZip($path,$zip){

$handler=opendir($path); //打开当前文件夹由$path指定.

while(($filename=readdir($handler))!==false){

if($filename != "." && $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文件

}

PHP应用以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持维易PHP.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561015.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python的django项目中怎么添加app_django下如何创建多个app并设置urls

1、创建第二个app假设我们项目P下面已经有了一个默认的app,名字是app1。现在我想创建第二个app,名字时app2。进入pychram下的Terminal中,运行命令:python manage.py startapp app2此外,我在每个app下都建立一个urls.py…

oracle监听启动命令6,[转] oracle 监听

启动监听:lsnrctl start查看监听:lsnrctl status停止监听:lsnrctl stop1、oracle 数据服务器包括:实例进程和数据库;实例进程包括:memory structure(sga)以及background process(pmon(进程监控)、smon(系统…

stripfxg php,zzcms v8.2 中的众多cve分析

看了一下最近的cve列表,发现有大佬怒刷了好多个cve,这个zzcms都快被审穿了,所以跟进学习一下CMS背景本文跟踪的这个cms,属于一个开源招商网站管理系统,属于比较小的cms,所以很多地方写的不是很完善&#xf…

python捕获异常装饰器_python异常装饰器--比较全的版本了

#异常捕获装饰器(亦可用于类方法)def try_except_log(fNone, max_retries: int 5, delay: (int, float) 1, step: (int, float) 0,exceptions: (BaseException, tuple, list) BaseException, sleeptime.sleep,processNone, validateNone, callbackNone, defaultNone):"&…

matlab weibpdf函数,matlab建模常用函数

附录Ⅰ 工具箱函数汇总Ⅰ.1 统计工具箱函数表Ⅰ-1 概率密度函数函数名 对应分布的概率密度函数betapdf 贝塔分布的概率密度函数binopdf 二项分布的概率密度函数chi2pdf 卡方分布的概率密度函数exppdf 指数分布的概率密度函数fpdf f分布的概率密度函数gampdf 伽玛分布的概率密度…

拉普拉斯变换_拉普拉斯变换——奇妙的数学

无奈学不会工程数学中的拉普拉斯变换,没办法去感知他的存在形式,在YOUTOBE上看到一个讲解拉普拉斯变换的视频,好像懂了些,分享给同样迷茫的小伙伴,下载的时候是有字幕的,发到知乎上就没字幕了,英…

linux下计算目录文件和,统计Linux 中文件和文件夹/目录的数量(示例代码)

嗨,伙计们,今天我们再次带来一系列可以多方面帮助到你的复杂的命令。 通过操作命令,可以帮助您计数当前目录中的文件和目录、递归计数,统计特定用户创建的文件列表等。在本教程中,我们将向您展示如何使用多个命令&…

没有足够的值_元丰通宝值多少钱吗?市场价值如何?有没有足够的收藏空间?...

元丰通宝是宋代神宗年间发行的,那么你知道现在元丰通宝值多少钱吗?市场价值如何?有没有足够的收藏空间?宋代虽然没有强大的军事实力,但其国内经济水平得到了发展,在许多朝代都处于领先地位。在元丰通宝的铸…

Linux不能读取目录,关于Linux上面无法读取资源目录下文件的问题

一开始我的代码是这样子的,读取本地子路径下的json文件代码运行的时候,在window是可以正常的Overridepublic String getBannerStr() {String str "";try {Resource resource new ClassPathResource("json/abc.json");File file resource.getFile();str …

jsp中java代码无效_来杯咖啡,教你如何优雅的在java中统计代码块耗时

推荐阅读:Sping源码RedisNginxMySQL等七篇实战技术文档,阿里大佬推荐阿里内部:2020年全技术栈文档PPT分享,(万粉总结,回馈粉丝)在我们的实际开发中,多多少少会遇到统计一段代码片段的耗时的情况&#xff0c…

linux 随机抽取文件,shell 随机从文件中抽取若干行的实现方法

shuf -n5 main.txtsort -R main.txt | head -5awk -vN5 -vC"wc -l file" BEGIN{srand();while(nwhile read line;do echo "$line $RANDOM";done < main.txt | sort -k2,2n| awk NR<5{print $1}shuf 命令的选项&#xff1a;-e, --echo &#xff1a;将…

c++—引用。。。

目录 目录前言引用的概念交换a和b的值&#xff1a;引用作为函数的返回值常引用例子 前言 纯自学&#xff0c;看的mooc上郭老师的课&#xff0c;整理整理。。。不然全忘了。。 引用的概念 类型名&引用名某变量名&#xff1b; int&rn&#xff1b; r引用了n&#x…

服务器闰秒 linux,闰秒导致部分 Linux 服务器高 CPU 使用率

国际地球自转和参考坐标系统服务(IERS)在2012年6月30日午夜(北京时间7月1号7点59分59秒)增加一闰秒(即出现7&#xff1a;59&#xff1a;60)。由于Linux kernel 2.6.29之前版本存在bug&#xff0c;在进行闰秒调整时可能会引起系统时钟服务ntpd进程死锁。Debian Lenny、RHEL/Cent…

const

目录 目录定义常量定义常量指针定义常引用 定义常量 const int max22&#xff1b; const double p3.1415; const char* sch"zzuli"; 定义常量指针 1.不可通过常量指针修改其指向的内容 &#xff5b;常量指针指向的内容不能随意修改&#xff5d; int n,m; cons…

http header 设置编码_【译】http.client

本模块实现了HTTP和HTTPS协议的客户端功能。通常本模块不会被直接使用&#xff0c;而是被urllib.request调用&#xff0c;来处理HTTP和HTTPS相关的URL。备注&#xff1a;HTTPS只有在支持SSL(带有ssl模块)的Python编译器里面才是可用的。(一)模块提供的类class http.client.HTTP…

diskgenius linux 分区,DiskGenius怎么分区,DiskGenius分区教程

DiskGenius分区教程方法一&#xff1a;一、首先&#xff0c;打开DiskGenius软件并单击以选择要操作的硬盘驱动器。二、然后右键单击“快速分区”按钮并单击“确定”。方法2&#xff1a;三、选择要操作的硬盘&#xff0c;单击软件上方的硬盘按钮&#xff0c;单击下面列中的快速分…

new

动态内存分配 用new运算符实现动态内存分配 动态内存分配分配一个变量分配一个数组new运算符返回值类型释放动态分配出来的内存空间动态分配指针数组 分配一个变量 pnew t; t是任意类型名&#xff0c;p为类型为t*的指针。 动态分配出一片大小为sizeof(t)字节的内存空间&a…

linux系统ip占用,IP地址被占用的问题,折腾我好几天了 (已解决)

原因找到了&#xff0c;另外一台机器的网卡上面不知道怎么绑定了两个IP地址eth0 Link encap:Ethernet HWaddr 00:20:ED:1A:62:7Einet addr:192.168.0.104 Bcast:192.168.0.255 Mask:255.255.255.0inet6 addr: fe80::220:edff:fe1a:627e/64 Scope:LinkUP BROADCAST RUNN…

sql server management studio性能分析_如何分析一条SQL的性能

来自公众号&#xff1a;谭小谭这篇文章将给大家介绍如何使用 explain 来分析一条 sql 。网上其实已经有非常多的文章都很详细的介绍了 explain 的使用&#xff0c;这篇文章将实例和原理结合起来&#xff0c;尽量让你有更好的理解&#xff0c;相信我&#xff0c;认真看完你应该会…