PHP压缩文件夹下的文件
继上一个文章此功能模块是可以将指定文件下的文件压缩成为一个压缩文件。既节约空间,又方便管理。删除压缩前文件,只留下压缩的文件。当做备份使用。那么下面就给大家介绍一下吧,有需要的可以进行一下参考。
首先//压缩指定文件下的文件。
$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,就是多次压缩会越压缩越深。目前没有解决,期待朋友们的优化。有好的解决方法可以交流一下哈。