Heim  >  Artikel  >  Backend-Entwicklung  >  Generieren Sie ZIP-komprimierte Dateien über PHP und unterstützen Sie die Pfadsuche nach Dateien und komprimierten Paketen

Generieren Sie ZIP-komprimierte Dateien über PHP und unterstützen Sie die Pfadsuche nach Dateien und komprimierten Paketen

PHP中文网
PHP中文网Original
2017-03-25 10:18:151967Durchsuche
/*
*   new creatZip($_dir,$_zipName);
*@ _dir是被压缩的文件夹名称,可使用路径,例 'a'或者'a/test.txt'或者'test.txt'
*@ _zipName是压缩后的压缩包名称,可使用路径,例 'a/test.zip'或者'test.zip'
**/
class creatZip {
    private $_dir;
    private $_zipDir;
    private $_zipName;
     
    public function __construct($dir,$zipName) {
        $this->_dir = $dir;
        $this->_zipDir = basename($dir);
        $this->_zipName = $zipName;
        $this->mkdirs();
        $this->creat();
    }
    //检测并生成目录
    private function mkdirs() {
        if (!is_dir(dirname($this->_zipName))) {
            $arr = explode('/', dirname($this->_zipName));
            $arrs = '';
            foreach($arr as $value) {
                if (!is_dir($arrs.$value)) {
                    if (!!mkdir($arrs.$value)) {
                        $arrs .= $value.'/';
                    }
                }
            }
        }
    }
    //生成Zip压缩包
    private function creat() {
        $zip = new ZipArchive;
        if (is_dir($this->_dir)) {
            $this->readDir($this->_dir,$files);
            if ($zip->open($this->_zipName,ZipArchive::CREATE)) {
                foreach ($files as $value) {
                    preg_match('//('.$this->_zipDir.'/.*)/', $value, $match);
                    if (is_dir($value)) {
                        @$zip->addEmptyDir($value, $match[1]);
                    } else {
                        @$zip->addFile($value, $match[1]);
                    }
                }
                $zip->close();
            }
        } else {
            if ($zip->open($this->_zipName,ZipArchive::CREATE)) {
                $zip->addFile($this->_dir, basename($this->_dir));
            }
        }
    }
    //读取文件夹所有文件
    private function readDir($dir,&$arr) {
        if ($dirs = opendir($dir)) {
            while (($file=readdir($dirs)) != false) {
                if ($file == '.' || $file == '..') continue;
                $files = $dir .'/'. $file;
                if (is_dir($files) && $this->isEmpty($files)) {
                    $this->readDir($files,$arr);
                } else {
                    $arr[] = $files;
                }
            }
        }
        closedir($dirs);
    }
    //判断文件夹是否为空
    private function isEmpty($dir) {
        if ($_dirs = opendir($dir)) {
            while (($file=readdir($dirs)) != false) {
                if($file != '.' && $file != '..') {
                    closedir($dirs);
                    return true;
                    break;
                }
            }
            closedir($dirs);
            return false;
        }
    }
}

Das Obige stellt die Methode zum Generieren komprimierter ZIP-Dateien in PHP vor, die die Suche nach Dateien und komprimierten Paketpfaden unterstützt, einschließlich Inhalten zum Lesen von Dateien. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

Verwandte Artikel:

So generieren Sie mit PHP ZIP-komprimierte Dateien mit detailliertem Code im Anhang

PHP realisiert die Online-Dekomprimierung der ZIP-Komprimierungsdatei

Einfache PHP-Methode zum Erstellen von ZIP-komprimierten Dateien

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn