源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

php ZipArchive压缩函数详解实例

  • 时间:2022-07-20 23:09 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:php ZipArchive压缩函数详解实例
用ZipArchive压缩文件,这个是php的扩展类,自php5.2版本以后就已经支持这个扩展,如果你在使用的时候出现错误,查看下php.ini里面的extension=php_zip.dll前面的分号有没有去掉,然后再重启Apache这样才能使用这个类库。 例1、生成zip 压缩文件
[u]复制代码[/u] 代码如下:
<?php /* 生成zip 压缩文件 */ function create_zip($files = array(),$destination = '',$overwrite = false) {     //if the zip file already exists and overwrite is false, return false     if(file_exists($destination) && !$overwrite) { return false; }     //vars     $valid_files = array();     //if files were passed in...     if(is_array($files)) {         //cycle through each file         foreach($files as $file) {             //make sure the file exists             if(file_exists($file)) {                 $valid_files[] = $file;             }         }     }     //if we have good files...     if(count($valid_files)) {         //create the archive         $zip = new ZipArchive();         if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {             return false;         }         //add the files         foreach($valid_files as $file) {             $file_info_arr= pathinfo($file);             $zip->addFile($file,$file_info_arr['basename']);//去掉层级目录         }         //debug         //echo 'The zip archive contains ',$zip->numFiles,' files with a status of ',$zip->status;         //close the zip -- done!         $zip->close();         //check to make sure the file exists         return file_exists($destination);     }     else     {         return false;     } } define('ROOTPATH',dirname ( __FILE__ )); //网站路径 $files_to_zip = array(     ROOTPATH.DIRECTORY_SEPARATOR.'PHP+jQuery+Cookbook.pdf',     ROOTPATH.DIRECTORY_SEPARATOR.'TurboListerZeroTemplate.csv' ); //if true, good; if false, zip creation failed $filename='my-archive.zip'; $result = create_zip($files_to_zip,$filename);  
例2 、压缩文件夹下面的所有文
[u]复制代码[/u] 代码如下:
<?php /* php zip压缩文件夹下面的所有文件 */ class HZip {   /**    * 添加文件和子目录的文件到zip文件    * @param string $folder    * @param ZipArchive $zipFile    * @param int $exclusiveLength Number of text to be exclusived from the file path.    */   private static function folderToZip($folder, &$zipFile, $exclusiveLength) {     $handle = opendir($folder);     while (false !== $f = readdir($handle)) {       if ($f != '.' && $f != '..') {         $filePath = "$folder/$f";         // Remove prefix from file path before add to zip.         $localPath = substr($filePath, $exclusiveLength);         if (is_file($filePath)) {           $zipFile->addFile($filePath, $localPath);         } elseif (is_dir($filePath)) {           // 添加子文件夹           $zipFile->addEmptyDir($localPath);           self::folderToZip($filePath, $zipFile, $exclusiveLength);         }       }     }     closedir($handle);   }   /**    * Zip a folder (include itself).    * Usage:    *   HZip::zipDir('/path/to/sourceDir', '/path/to/out.zip');    *    * @param string $sourcePath Path of directory to be zip.    * @param string $outZipPath Path of output zip file.    */   public static function zipDir($sourcePath, $outZipPath)   {     $pathInfo = pathInfo($sourcePath);     $parentPath = $pathInfo['dirname'];     $dirName = $pathInfo['basename'];     $sourcePath=$parentPath.'/'.$dirName;//防止传递'folder' 文件夹产生bug     $z = new ZipArchive();     $z->open($outZipPath, ZIPARCHIVE::CREATE);//建立zip文件     $z->addEmptyDir($dirName);//建立文件夹     self::folderToZip($sourcePath, $z, strlen("$parentPath/"));     $z->close();   } } //使用方法 HZip::zipDir('yourlife', 'yourlife.zip'); ?>  
1.ZipArchive::addEmptyDir 添加一个新的文件目录 2.ZipArchive::addFile 将文件添加到指定zip压缩包中。 3.ZipArchive::addFromString 添加的文件同时将内容添加进去 4.ZipArchive::close 关闭ziparchive 5.ZipArchive::extractTo 将压缩包解压 6.ZipArchive::open 打开一个zip压缩包 7.ZipArchive::getStatusString 返回压缩时的状态内容,包括错误信息,压缩信息等等 8.ZipArchive::deleteIndex 删除压缩包中的某一个文件,如:deleteIndex(0)删除第一个文件 9.ZipArchive::deleteName 删除压缩包中的某一个文件名称,同时也将文件删除。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部