继上一个文章此功能模块是可以将指定文件下的文件压缩成为一个压缩文件。既节约空间,又方便管理。删除压缩前文件,只留下压缩的文件。当做备份利用。那么下面就给大家先容一下吧,有须要的可以进行一下参考。
首先//压缩指定文件下的文件。
$wjj=date('Ymd');
// 最终生成的文件名(必须含路径)
$file = dirname(__FILE__).\"大众/saveFile/\公众.$wjj.\公众/\"大众.date ( 'YmdH' ) . \公众.zip\公众;
//实例化类 须要开启php.ini 中的extension=php_zip.dll 扩展
//下载 php_zip.dll扩展放到php\ext\目录中
$zip=new ZipArchive();
if($zip->open($file, ZipArchive::OVERWRITE)=== TRUE){
//调用方法,对要打包的根目录进行操作,并将ZipArchive的工具通报给方法
$z=addFileToZip(\公众saveFile/\公众.$wjj,$zip);
//关闭处理的zip文件
$zip->close();
}
//判断如果压缩成功即可删除压缩前的文件只留压缩文件,在当前目录天生压缩文件。
$handler=@opendir(\"大众saveFile/\"大众.$wjj);
while(($filename=@readdir($handler))!==false){
if($filename != \"大众.\"大众 && $filename != \"大众..\"大众){
//取得扩展名称,除了zip别的都删除
$ext=substr(strrchr($filename, '.'), 1);
if($ext!='zip'){
unlink(\"大众saveFile/\公众.$wjj.\"大众/\"大众.$filename);
}
}
}
//压缩文件函数
function addFileToZip($path,$zip){
//打开当前文件夹由$path指定。
$handler=@opendir($path);
while(($filename=@readdir($handler))!==false){
//文件夹文件名字为'.'和‘..’,不操作
//如果不想让压缩过的zip也压缩第二个里就加这个 && $ext!='zip'
if($filename != \公众.\"大众 && $filename != \"大众..\"大众 ){
//调用压缩的方法进行压缩
$z=$zip->addFile($path.\"大众/\公众.$filename);
}
}
@closedir($path);
return $z;
}
此方法中算是有一个小bug,便是多次压缩会越压缩越深。目前没有办理,期待朋友们的优化。有好的办理方法可以互换一下哈。