本文主要是介绍PHP将多级目录打包成zip文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近接触PHP,需要用到zip压缩,在网上搜索的一大堆,发现代码都不低于50行。 而且调用还很费事(基础太少看不懂)。让我收获的是Php提供有一个ZipArchive类,并有如下方法。
bool addEmptyDir( string
$dirname
)
bool addFile( string
mixed
open(
string $filename
[, string$localname
= NULL
[, int$start
= 0 [, int $length
= 0 ]]] )
$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文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!