>백엔드 개발 >PHP 튜토리얼 >PHP 파일 압축 패키지

PHP 파일 압축 패키지

不言
不言원래의
2018-05-09 09:04:492164검색

이 글은 주로 PHP 파일의 압축 패키지를 소개합니다. 이제는 모든 사람과 공유합니다. 필요한 친구들이 참조할 수 있습니다.

압축된 디렉터리의 모든 파일

향후 재사용을 용이하게 합니다. , 여기에 썼습니다. 세 가지 함수는 하나의 클래스 아래에 함께 배치되어야 합니다. 독자들은 상황에 따라 분리할 수도 있지만, 메소드 호출의 클래스 이름을 변경하는 데 주의하시기 바랍니다(여기에서는 self 가 사용됩니다).

질문: 여기서는 현재 경로에 있는 모든 파일(폴더 포함)만 압축 패키지로 압축하고 싶습니다. 중복된 폴더를 압축하는 방법을 모르겠습니다. 말해 줄 수 있어요, 고마워요!

   /**
     * add path to zip
     * Here, I want to add all the files under the current path, but I don't know how to add it, I want to get help, thank you!
     * @param $path
     * @param $zip
     */
    public static function addDirectoryToZip($path, $zip)
    {
        self::createPath([$path, $zip]);        
        $zipObj = new \ZipArchive();        
        if ($zipObj->open($zip, \ZipArchive::CREATE) === TRUE) {            
        $handler = opendir($path);            
        while (($filename = readdir($handler))) {                
        if ($filename != "." && $filename != "..") {                    
        $tem_path = $path . DIRECTORY_SEPARATOR . $filename;                    
        if (is_dir($tem_path)) {                        
        self::addDirectoryToZip($tem_path, $zip);
                    } else {                        
                    $zipObj->addFromString(iconv('gbk', 'utf-8', $tem_path), file_get_contents($tem_path));
                    }
                }
            }
            @closedir($path);            
            $zipObj->close();
        }
    }    /**
     * Create a or more path
     * @param $path
     */
    public static function createPath($path)
    {
        if (is_array($path)) {            
        foreach ($path AS $v) {                
        if (!is_array($v)) {                    
        self::createOnePath($v);
                } else {                    
                die('Must be a one-dimensional array!');
                }
            }
        } else {            
        self::createOnePath($path);
        }
    }    /**
     * Create a path
     * @param $path
     */
    public static function createOnePath($path)
    {
        $path = strpos(basename($path), '.') ? dirname($path) : $path;       
         if (!is_dir($path)) {//nonexistion path
            mkdir($path, 0777, true) ? '' : die('Creation path failed!');
        }
    }

관련 권장 사항:

PHP 파일을 zip으로 쉽게 패키징하고 다운로드할 수 있는 몇 줄의 코드

PHP 파일 잠금으로 멀티 스레드 쓰기 안전 보장

위 내용은 PHP 파일 압축 패키지의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.