PHP 上传文件 面向对象

来源:互联网 发布:北京景观设计软件培训 编辑:程序博客网 时间:2024/05/17 22:54

1,封装

<?phpclass upload{      protected $fileName;      protected $maxSize;      protected $allowMime;      protected $imgFlag;      protected $allowExt;      protected $uploadPath;      protected $fileInfo;      protected $error;      protected $ext;   public function __construct($fileName='myFile',$imgFlag=true,$uploadPath='./uploads',$maxSize=5242880,$allowExt=array('jpeg','jpg','png','gif','wbmp'),$allowMime=array('image/jpeg','image/jpg','image/png','image/gif','image/wbmp')){      $this->filename=$filename;      $this->maxSize=$maxSize;      $this->allowMime=$allowMime;      $this->allowExt=$allowExt;      $this->uploadPath=$uploadPath;      $this->imgFlag=$imgFlag;      $this->fileInfo=$_FILES[$this->fileName];   }   /*    *检测是否有错    */    protected function checkError() {       if(is_null($this->fileInfo)){        if($this->fileInfo['error']>0){           switch ($this->fileInfo['error']) {              case 1:                 $this->error='超过了PHP配置文件中upload_max_files';                 break;              case 2:                 $this->error='超过了表单MAX_FTLE_SIZE设置的值';                 break;              case 3:                 $this->error='文件部分上传';                 break;              case 4:                 $this->error='没有选择上传文件';                 break;              case 6:                 $this->error='没有找到临时目录';                 break;              case 7:                 $this->error='文件不可写';                 break;              case 8:                 $this->error='由于PHP的扩展程序中断文件上传';                 break;           }           return false;        }else{           return true;      }  }else{   $this->error='文件上传出错';   return false;  }    }    /*     @检测文件的大小     */    protected function checkSize() {      if($this->fileInfo['size']>$this->maxSize){       $this->error='上传的文件过大';       return false;      }      return true;    }     /*     @检测文件的扩展名     */     protected function checkExt() {         $this->ext=strtolower(pathinfo($this->fileInfo['name'],PATHINFO_EXTENSION));       if(!in_array($this->ext, $this->allowExt)){       $this->error='不允许的扩展名';       return false;      }      return true;     }     /*     @检测文件类型     */      protected function checkMime() {       if(!in_array($this->fileInfo['type'], $this->allowMime)){       $this->error='不允许的文件类型';       return false;      }      return true;      }      /*       @检测文件是否真的是图片       */       protected function checkTrueImg() {       if($this->imgFlag){          if(!@getimagesize($this->fileInfo['tmp_name'])){             $this->error='不是真的图片';       return false;          }        return true;      }           }      /*       @检测文件是否是http post传递       */       protected function HTTPPost() {       if(!is_uploaded_file($this->fileInfo['tmp_name'])){          $this->error='http post传递';                   return false;          }        return true;      }               }      /*        @显示错误       */        protected function showError() {           exit('<span style ="color:red">'.$this->error.'</span>');        }        /*         @判断路径是否存在,不存在创建         */        protected function checkUploadPath() {           if(!file_exists($this->uploadPath)){              mkdir($this->uploadPath,0777,ture);           }        }        /**得到唯一文件名 */function getUniName(){   return md5(uniqid(microtime(true),true));}          /*     *上传文件     */   public function uploadFile() {      if($this->checkError()&&$this->checkSize()          &&$this->checkMime()&&$this->checkTrueImg()&&$this->checkHTTPPost()&&$this->checkExt()){          //判断路径是否存在          $this->checkUploadPath();          $this->uniName=$this->getUniName();          $this->destination=$this->uploadPath.'/'.$this->uniName.'.'.$this->ext;      if(move_uploaded_file($this->fileInfo['tmp_name'], $this->destination)){       return $this->destination;      }else{        $this->error='文件移动失败';        $this->showError();      }      }else{          $this->showError();      }   }}
2,视图

<!DOCTYPE html><html lang="en"><head>   <meta charset="UTF-8">   <title>文件上传</title></head><body>   <form action="morefile.php" method="post" enctype="multipart/form-data">         <!-- multiple选择多个文件上传 -->         <input type="file" name="myFile[]" multiple="multiple"/><br>         <input type="submit" value="上传文件" /><br>   </form></body></html>
3,使用:

<?phpheader('content-type:text/html;charset=utf-8');require_once 'class.php';$upload=new upload();// $d=$upload->uploadFile();$d=$upload->uploadFile('myfile','fff');echo $d;

原创粉丝点击