当前位置:Gxlcms > PHP教程 > 通过php生成zip压缩文件,支持文件和压缩包路径查找

通过php生成zip压缩文件,支持文件和压缩包路径查找

时间:2021-07-01 10:21:17 帮助过:16人阅读

  1. /*
  2. * new creatZip($_dir,$_zipName);
  3. *@ _dir是被压缩的文件夹名称,可使用路径,例 'a'或者'a/test.txt'或者'test.txt'
  4. *@ _zipName是压缩后的压缩包名称,可使用路径,例 'a/test.zip'或者'test.zip'
  5. **/
  6. class creatZip {
  7. private $_dir;
  8. private $_zipDir;
  9. private $_zipName;
  10. public function __construct($dir,$zipName) {
  11. $this->_dir = $dir;
  12. $this->_zipDir = basename($dir);
  13. $this->_zipName = $zipName;
  14. $this->mkdirs();
  15. $this->creat();
  16. }
  17. //检测并生成目录
  18. private function mkdirs() {
  19. if (!is_dir(dirname($this->_zipName))) {
  20. $arr = explode('/', dirname($this->_zipName));
  21. $arrs = '';
  22. foreach($arr as $value) {
  23. if (!is_dir($arrs.$value)) {
  24. if (!!mkdir($arrs.$value)) {
  25. $arrs .= $value.'/';
  26. }
  27. }
  28. }
  29. }
  30. }
  31. //生成Zip压缩包
  32. private function creat() {
  33. $zip = new ZipArchive;
  34. if (is_dir($this->_dir)) {
  35. $this->readDir($this->_dir,$files);
  36. if ($zip->open($this->_zipName,ZipArchive::CREATE)) {
  37. foreach ($files as $value) {
  38. preg_match('//('.$this->_zipDir.'/.*)/', $value, $match);
  39. if (is_dir($value)) {
  40. @$zip->addEmptyDir($value, $match[1]);
  41. } else {
  42. @$zip->addFile($value, $match[1]);
  43. }
  44. }
  45. $zip->close();
  46. }
  47. } else {
  48. if ($zip->open($this->_zipName,ZipArchive::CREATE)) {
  49. $zip->addFile($this->_dir, basename($this->_dir));
  50. }
  51. }
  52. }
  53. //读取文件夹所有文件
  54. private function readDir($dir,&$arr) {
  55. if ($dirs = opendir($dir)) {
  56. while (($file=readdir($dirs)) != false) {
  57. if ($file == '.' || $file == '..') continue;
  58. $files = $dir .'/'. $file;
  59. if (is_dir($files) && $this->isEmpty($files)) {
  60. $this->readDir($files,$arr);
  61. } else {
  62. $arr[] = $files;
  63. }
  64. }
  65. }
  66. closedir($dirs);
  67. }
  68. //判断文件夹是否为空
  69. private function isEmpty($dir) {
  70. if ($_dirs = opendir($dir)) {
  71. while (($file=readdir($dirs)) != false) {
  72. if($file != '.' && $file != '..') {
  73. closedir($dirs);
  74. return true;
  75. break;
  76. }
  77. }
  78. closedir($dirs);
  79. return false;
  80. }
  81. }
  82. }

以上就介绍了php生成zip压缩文件的方法,支持文件和压缩包路径查找,包括了读取文件方面的内容,更多相关内容请关注PHP中文网(www.gxlcms.com)!

相关文章:

使用php生成zip压缩文件的方法附详细代码

php实现在线解压zip压缩文件

简单的php创建zip压缩文件的方法

人气教程排行