php Zip拡張

1386 ワード

phpでファイルをzip形式に圧縮するにはphpのzip拡張を使用して実現することができる.
バージョン要件
PHP >= 5.2.0
≪インスタンス|Instance|emdw≫
    /**
     * @apiDescription     zip
     * @param $saveDir
     * @param $zipName
     */
    protected function packToZip($saveDir, $zipName)
    {
        //            ?     
        if(file_exists($zipName)) {
            unlink($zipName);
        }
        $zip = new \ZipArchive();
        if($zip->open($zipName, \ZipArchive::CREATE) === TRUE) {
            $this->addFileToZip($saveDir, $zip,$saveDir); //    ,            ,  ZipArchive        
            $zip->close(); //     zip  
        }
        return ;
    }
    /**
     * @apiDescription     zip     
     * @param $path               
     * @param $zip        zip  
     */
    protected function addFileToZip($path, $zip){
        $handler = opendir($path);
        while(($filename = readdir($handler)) !== false) {
            if($filename != "." && $filename != "..") { //        '.' ‘..’,         
                if(is_dir($path . $filename)) { //              ,   
                    self::addFileToZip($path . $filename . DS, $zip);
                } else { //     zip  
                    $zip->addFile($path.$filename);
                }
            }
        }
        @closedir($handler);
        return ;
    }