PHP 打包ZIP

    function zip_file($chdir,$path,$zip_file){
        //using system path
        //$chdir 所压缩文件所在路径(绝对或相对路径),$path 需要压缩的文件数组或名称(相对路径),$zip_file压缩包所在路径
        if(!chdir($chdir)){
            return array();
        }
        $zip = new ZipArchive;
        if($zip->open($zip_file, ZipArchive::OVERWRITE) === TRUE){
            $rt = array();
            $arr = array();
            if(!is_array($path)){
                $arr[] = $path;
            }else{
                $arr = $path;
            }
            foreach($arr as $v){
                    if (is_dir($v)){
                        array_push($rt,array('path'=>"dir:".porgram_path($v)));
                        zip_file_dir($v,$zip,$rt);
                    }else{
                        $zip->addFile($v);
                        array_push($rt,array('path'=>"file:".porgram_path($v)));
                    }
            }
            $zip->close();
            return $rt;//返回压缩数据数组
        }else{
            return array();
        }
    }
    function zip_file_dir($path,&$zip,&$list){
        $handle = opendir($path);
        if(!$handle){
            return false;
        }
        while ($file = readdir($handle)) {
            if(($file == ".") || ($file == ".."))
                continue;
            if(is_file($path."/".$file)){
                $zip->addFile($path."/".$file);
                array_push($list,array('path'=>"file:".porgram_path($path."/".$file)));
            }elseif(is_dir($path."/".$file)){  
                array_push($list,array('path'=>"dir:".porgram_path($path."/".$file)));             
                $this->zip_file_dir($path."/".$file,$zip,$list);
            }
        }
        closedir($handle); 
    }

当前还没有任何评论

写下你最简单的想法