通过php生成zip压缩文件,支持文件和压缩包路径查找
Mar 25, 2017 am 10:18 AM/* * 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; } } }
Copier après la connexion
以上就介绍了php生成zip压缩文件的方法,支持文件和压缩包路径查找,包括了读取文件方面的内容,更多相关内容请关注PHP中文网(www.php.cn)!
相关文章:
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines
By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines
By DDD
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines
By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds Tags

Article chaud
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines
By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines
By DDD
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines
By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian

Comment configurer Visual Studio Code (VS Code) pour le développement PHP
