网站制作学习网PHP→正文:php压缩解压Zip文件
字体:

php压缩解压Zip文件

PHP 2011/2/23 18:14:41  点击:不统计

http://%77%77%77%2E%66%6F%72%61%73%70%2E%63%6E

PHP创建ZIP压缩文件,php解压ZIP,php操作ZIP类,php操作zip类,通过不同的方法来实现,压缩(文件和文件夹),解压,删除以及重命名压缩文件内容本站原创,转载请注明
<?php
class zip_forasp{
  public $zipobj;#zip对象
  public $err;#设置错误信息
  public $temp_array;#假如有文件夹添加,则进行临时数组放置
  function __construct(){
  if(class_exists(ZipArchive)){
 $this->zipobj = new ZipArchive();
    }else{
    $this->err_message("不能创建zip对象,请确定php.ini配置是否正确:将;extension=php_zip.dll(最后一个)前面的;去掉,类".__CLASS__.__LINE__."行");
 }
  }
  public function create_zip($file){#创建压缩文件,file是生成的zip文件名
      if(!$this->zipobj->open($file.".zip",ZipArchive::CREATE))$this->err_message("未知错误,类".__CLASS__.__LINE__."行");  
   }
  public function add_file($filepath){#向压缩文件添加内容,可以是文件,也可以是文件夹
   if(is_dir($filepath)){#如果是文件夹则去获取里面的便利内容
 $this->get_dir_file($filepath);//FORASP.CN
 $file = $this->temp_array;//将遍历回来的文件路径数组给filepath
 }else{
 if($this->check_file($filepath))return false;
 $file[] = $filepath;
 }
 for($i=0;$i<count($file);$i++){
 if(!$this->zipobj->addFile($file[$i])){
   $this->err_message("未知错误,类".__CLASS__.__LINE__."行");
   break;
   } 
 }
 return true;
  }
  public function change_name($zipname,$oldname,$newname){
 $this->open_zip($zipname);
 if($this->zipobj->renameName($oldname,$newname))$this->err_message("打开压缩文件出错,类".__CLASS__.__LINE__."行");
  }
  public function del_file($zipname,$filename){#删除压缩文件内容,可以是文件,也可以是文件夹,zip是要删除的压缩文件的名称,后面的是要删除的压缩内容名称
    $this->open_zip($zipname);
 if($this->zipobj->deleteName($filename))$this->err_message("打开压缩文件出错,类".__CLASS__.__LINE__."行");
  }
  public function un_zip($file,$path="./"){#file要解压文件,$path要解压到的路径,默认为当前路径
   $temp = $this->open_zip($file);
   $this->zipobj->extractTo($path);
   return $temp;
  }
  private function open_zip($zipname){//
   if($this->check_file($zipname))return false;
   if(!$this->zipobj->open($zipname))$this->err_message("打开压缩文件出错,类".__CLASS__.__LINE__."行");#
  }
  private function get_dir_file($temppath){
    $dir = dir($temppath);
 while($tempfile = $dir->read()){
   if($tempfile!="."&&$tempfile!=".."){
    if(is_file($temppath."/".$tempfile))$this->temp_array[]=$temppath.$tempfile;
    if(is_dir($temppath."/".$tempfile))$this->get_dir_file($temppath."/".$tempfile);
   }
 }
 return;
  }
 private function check_file($file){
  if(!file_exists($file))$this->err_message("文件".$file."不存在");//
 }
  public function zip_close(){
  $this->zipobj->close();
  }
  private function err_message($str){
  echo $str;
  die();
  }
}#类结束
/*
本站原创:http://www.forasp.cn/
QQ419018470
需要说明一点的是:需要配置php.ini文件,将最后的;extension=php_zip.dll(最后一个)前面的;去掉
请保留此信息,不影响运行
*/
//进行压缩测试
$zip = new zip_forasp();
$zip->create_zip("newzip2");#php创建zip压缩文件
//$zip->add_file("3/");#php向zip文件中添加文件夹
$zip->add_file("2.txt");#php想zip中添加文件
$zip->zip_close();#关闭zip对象

#进行压缩内容重命名测试
$zip1 = new zip_forasp();
$zip1->change_name("newzip.zip","3/4.bmp","3/5.bmp");#php重命名zip文件里面内容
$zip1->zip_close();
///删除文件测试
$zip2 = new zip_forasp();
$zip2->del_file("newzip.zip","file.txt");
$zip2->zip_close();
//进行解压测试
$zip4 = new zip_forasp();
$zip4->un_zip("newzip.zip");
$zip4->zip_close();
?>
测试一下吧


forasp.cn

·上一篇:php类关键词 >>    ·下一篇:php配置Xdebug >>
推荐文章
最新文章