php压缩文件夹

Posted on Posted in php
Tips: 本文创建于2015年8月31日,已超过 2 年,内容或图片可能已经失效!

php把文件夹压缩zip示例

  1. <?php   
  2. /*  
  3. php zip压缩文件夹下面的所有文件  
  4. */  
  5. class HZip   
  6. {   
  7.   /**  
  8.    * 添加文件和子目录的文件到zip文件  
  9.    * @param string $folder  
  10.    * @param ZipArchive $zipFile  
  11.    * @param int $exclusiveLength Number of text to be exclusived from the file path.  
  12.    */  
  13.   private static function folderToZip($folder, &$zipFile$exclusiveLength) {   
  14.     $handle = opendir($folder);   
  15.     while (false !== $f = readdir($handle)) {   
  16.       if ($f != '.' && $f != '..') {   
  17.         $filePath = "$folder/$f";   
  18.         // Remove prefix from file path before add to zip.   
  19.         $localPath = substr($filePath$exclusiveLength);   
  20.         if (is_file($filePath)) {   
  21.           $zipFile->addFile($filePath$localPath);   
  22.         } elseif (is_dir($filePath)) {   
  23.           // 添加子文件夹   
  24.           $zipFile->addEmptyDir($localPath);   
  25.           self::folderToZip($filePath$zipFile$exclusiveLength);   
  26.         }   
  27.       }   
  28.     }   
  29.     closedir($handle);   
  30.   }   
  31.   
  32.   /**  
  33.    * Zip a folder (include itself).  
  34.    * Usage:  
  35.    *   HZip::zipDir('/path/to/sourceDir', '/path/to/out.zip');  
  36.    *  
  37.    * @param string $sourcePath Path of directory to be zip.  
  38.    * @param string $outZipPath Path of output zip file.  
  39.    */  
  40.   public static function zipDir($sourcePath$outZipPath)   
  41.   {   
  42.     echo $sourcePath;  
  43.     echo $outZipPath;  
  44.     echo '<br />';  
  45.     $pathInfo = pathInfo($sourcePath);   
  46.     $parentPath = $pathInfo['dirname'];   
  47.     $dirName = $pathInfo['basename'];   
  48.     $sourcePath=$parentPath.'/'.$dirName;//防止传递'folder' 文件夹产生bug   
  49.     $z = new ZipArchive();   
  50.     $z->open($outZipPath, ZIPARCHIVE::CREATE);//建立zip文件   
  51.     $z->addEmptyDir($dirName);//建立文件夹   
  52.     self::folderToZip($sourcePath$zstrlen("$parentPath/"));   
  53.     $z->close();   
  54.   }   
  55. }   
  56. //使用方法   
  57. HZip::zipDir('./ziptmp', './ziptmp1.zip');   
» 转载请注明来源:呢喃 » php压缩文件夹