一个关于php操作进行zip打包的压缩类

本文介绍了一个使用PHP编写的用于处理SVN更新并打包为ZIP下载包的实用小工具。作者参考了网上的相关代码,提供了用于进行ZIP压缩和文件下载的组件链接。
摘要由CSDN通过智能技术生成

最近项目有需求需要定期svn更新项目,并打包成下载包供下载,参考了网上的一些相关代码后写了如下一个用来进行zip压缩的小组件

关于php进行svn操作的组件:http://blog.csdn.net/meeeen7/article/details/78297063

关于php进行download下载的组件:http://blog.csdn.net/meeeen7/article/details/78297528


class zipUtil {

    public static function zip($dir,$saveDir,$file) {
        $zip = new ZipArchive();
        if($zip->open($saveDir.$file.'.zip', ZipArchive::OVERWRITE) === TRUE){
            self::addFileToZip($dir.'/', $zip); //调用方法,对要打包的根目录进行操作,并将ZipArchive的对象传递给方法
            $zip->close(); //关闭处理的zip文件
        }
    }

    private function addFileToZip($dir,$zip) {
        $handler=opendir($dir); //打开当前文件夹由$path指定。
        while(($filename=readdir($handler))!==false){
            if($filename != "." && $filename != ".." && $filename != ".svn"){//文件夹文件名字为'.'和'..',不要对他们进行操作
                if(is_dir($dir."/".$filename) && count(scandir($dir."/".$filename)) > 3){// 如果读取的某个对象是文件夹,则递归
                    self::addFileToZip($dir."/".$filename, $zip);
                }else{ //将文件加入zip对象
                    $zip->addFile($dir."/".$filename);
                }
            }
        }
        @closedir($dir);
    }

}

一开始的实现思路本来是想直接用php的exec直接运行shell zip命令进行打包的,后来发现php有ziparchive这样一个扩展,研究了一下后决定使用ziparchive来进行压缩,使用时直接调用zip函数即可,会自动递归调用addfiletozip函数,将文件和文件夹放到zip包中,其中$dir,$saveDir,$file分别代表了要压缩的文件的路径,目标存放路径和打包后的zip包名

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值