PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,官方也有对其应用的讲解
访问地址:http://cn2.php.net/manual/zh/book.zip.php
这里也就说下他的比较常用参数,并提供了示例:
ZipArchive::open 打开一个zip压缩包
ZipArchive::close 关闭ziparchive
ZipArchive::addEmptyDir 添加一个新的文件目录
ZipArchive::addFile 将文件添加到指定zip压缩包中。
ZipArchive::addFromString 添加的文件同时将内容添加进去
ZipArchive::extractTo 将压缩包解压
ZipArchive::getStatusString 返回压缩时的状态内容,包括错误信息,压缩信息等等
ZipArchive::deleteIndex 删除压缩包中的某一个文件,如:deleteIndex(0)删除第一个文件
ZipArchive::deleteName 删除压缩包中的某一个文件名称,同时也将文件删除。
在当前文件夹创建一个php的文件,对里面的所有进行打包压缩
[php]
function addFileToZip($path, $zip){
$handler = opendir($path); //打开当前文件夹由$path指定。
while(($filename = readdir($handler)) !== false){
if($filename != "." && $filename != ".."){//文件夹文件名字为’.’和‘..’,不要对他们进行操作
if(is_dir($path."/".$filename)){// 如果读取的某个对象是文件夹,则递归
$zip->addEmptyDir($path."/".$filename);
addFileToZip($path."/".$filename, $zip);
}else{ //将文件加入zip对象
$zip->addFile($path."/".$filename);
}
}
}
@closedir($path);
}
$filedir = getcwd(); //获取当前文件所在路径
$zip = new ZipArchive();
if($zip->open(‘test.zip’, ZipArchive::CREATE) === TRUE){
$scandir = scandir($filedir); //获取当前所在文件夹下的所有信息
foreach($scandir as $k=>$value){
if($value != ‘.’ && $value != ‘..’){
if(is_dir($value)){
$zip->addEmptyDir($value); //如果是文件夹添加
addFileToZip($value, $zip); //调用方法,对要打包的根目录进行操作,并将ZipArchive的对象传递给方法
}else{
if($value != ‘compress.php’){
$zip->addFile($value);
}
}
}
}
$zip->close(); //关闭处理的zip文件
echo ‘ok’;
}else{
echo ‘failed’;
}
[/php]
对当前文件进行解压
[php]
$filedir = getcwd();
$zip = new ZipArchive();
if($zip->open(‘test.zip’) === TRUE){
$zip->extractTo($filedir);
$zip->close();
echo ‘ok’;
}else{
echo ‘failed’;
}
[/php]
发表评论