当前位置: 移动技术网 > IT编程>开发语言>PHP > php多个不同目录打包到指定zip压缩文件

php多个不同目录打包到指定zip压缩文件

2020年07月22日  | 移动技术网IT编程  | 我要评论

php多文件夹打包压缩

首先安装ZipArchive扩展,具体安装方法百度一下,或者直接看官方文档

ZipArchive官方文档

直接上代码,简单的调用

/*
     * 文件夹打包
     * */
    public static function addFileToZip($path,$zip)
    {
        $handler = opendir($path); //打开当前文件夹由$path指定。
        while (($filename = readdir($handler)) !== false) {
            if ($filename != "." && $filename != "..") {//文件夹文件名字为'.'和‘..',不要对他们进行操作
                if (is_dir($path . "/" . $filename)) {// 如果读取的某个对象是文件夹,则递归
                    self::addFileToZip($path . "/" . $filename, $zip);
                } else { //将文件加入zip对象
                    $zip->addFile($path . "/" . $filename);
                }
            }
        }
    }
    /*
     * 文件夹打包,直接调用这个就行了
     * param array $paths 需要打包的目录绝对路径,一维数组传多个目录,比如['/imgs/test1/','/imgs/test2','...']
     * param $filename 保存的绝对路径文件名称。比如/data/tmp/test.zip
     * */
    public static function  dirToZip($paths,$filename)
    {
        $zip = new \ZipArchive();
        try {
            if ($zip->open($filename, $zip::CREATE) == TRUE) {
                foreach ($paths as $path){
                    self::addFileToZip($path, $zip); //调用方法,对要打包的根目录进行操作,并将ZipArchive的对象传递给方法
                }
                $zip->close(); //关闭处理的zip文件
            }
            if(file_exists($filename)){
                return ['code'=>200,'url'=>$filename,'msg'=>'success'];
            }
            return ['code'=>-200,'msg'=>'打包失败'];
        } catch (\Exception $e) {
            return ['code'=>-200,'msg'=>$e->getMessage()];
        }
    }

外部只需要简单调用dirToZip方法就行了

---- $paths可以是多个目录,用数组分开

本文地址:https://blog.csdn.net/hzthis/article/details/107488086

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网