PHP将多级目录打包成zip文件

2024-08-21 09:18
文章标签 php zip 打包 目录 多级

本文主要是介绍PHP将多级目录打包成zip文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近接触PHP,需要用到zip压缩,在网上搜索的一大堆,发现代码都不低于50行。  而且调用还很费事(基础太少看不懂)。让我收获的是Php提供有一个ZipArchive类,并有如下方法。

bool addEmptyDir( string $dirname )
bool addFile( string $filename [, string$localname= NULL[, int$start = 0 [, int $length = 0 ]]] )
mixed open( string $filename [, int$flags] )  

bool close(void )

回忆用java中写的思路,便摩擦php,实现如下:

|--调用

		//创建<span style="font-family: Arial, Helvetica, sans-serif;">ZipArchive对象</span>$zip = new ZipArchive();//参数1:zip保存路径,参数2:ZIPARCHIVE::CREATE没有即是创建if(!$zip->open("$exportPath.zip",ZIPARCHIVE::CREATE)){echo "创建[$exportPath.zip]失败<br/>";return;}//echo "创建[$exportPath.zip]成功<br/>";$this->createZip(opendir($exportPath),$zip,$exportPath);$zip->close();

|--执行

	/*压缩多级目录$openFile:目录句柄$zipObj:Zip对象$sourceAbso:源文件夹路径*/function createZip($openFile,$zipObj,$sourceAbso,$newRelat = ''){while(($file = readdir($openFile)) != false){if($file=="." || $file=="..")continue;/*源目录路径(绝对路径)*/$sourceTemp = $sourceAbso.'/'.$file;/*目标目录路径(相对路径)*/$newTemp = $newRelat==''?$file:$newRelat.'/'.$file;if(is_dir($sourceTemp)){//echo '创建'.$newTemp.'文件夹<br/>';$zipObj->addEmptyDir($newTemp);/*这里注意:php只需传递一个文件夹名称路径即可*/$this->createZip(opendir($sourceTemp),$zipObj,$sourceTemp,$newTemp);}if(is_file($sourceTemp)){//echo '创建'.$newTemp.'文件<br/>';$zipObj->addFile($sourceTemp,$newTemp);}}}

|--补充

开启PHP支持ZipArchive
在php.ini文件中将extension=php_zip.dll  开头的;的去掉。






这篇关于PHP将多级目录打包成zip文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1092750

相关文章

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

Python如何实现高效的文件/目录比较

《Python如何实现高效的文件/目录比较》在系统维护、数据同步或版本控制场景中,我们经常需要比较两个目录的差异,本文将分享一下如何用Python实现高效的文件/目录比较,并灵活处理排除规则,希望对大... 目录案例一:基础目录比较与排除实现案例二:高性能大文件比较案例三:跨平台路径处理案例四:可视化差异报

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录

idea Maven Springboot多模块项目打包时90%的问题及解决方案

《ideaMavenSpringboot多模块项目打包时90%的问题及解决方案》:本文主要介绍ideaMavenSpringboot多模块项目打包时90%的问题及解决方案,具有很好的参考价值,... 目录1. 前言2. 问题3. 解决办法4. jar 包冲突总结1. 前言之所以写这篇文章是因为在使用Mav

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

使用zip4j实现Java中的ZIP文件加密压缩的操作方法

《使用zip4j实现Java中的ZIP文件加密压缩的操作方法》本文介绍如何通过Maven集成zip4j1.3.2库创建带密码保护的ZIP文件,涵盖依赖配置、代码示例及加密原理,确保数据安全性,感兴趣的... 目录1. zip4j库介绍和版本1.1 zip4j库概述1.2 zip4j的版本演变1.3 zip4

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

java如何解压zip压缩包

《java如何解压zip压缩包》:本文主要介绍java如何解压zip压缩包问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解压zip压缩包实例代码结果如下总结java解压zip压缩包坐在旁边的小伙伴问我怎么用 java 将服务器上的压缩文件解压出来,