中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

PHP中的一個很好用的文件上傳類

2018-07-20    來源:open-open

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用
<?php
 
 class FileUpload{
  
  private $filepath; //設(shè)置上傳文件的路徑
  private $allowtype=array('jpg','jpeg','gif','bmp'); //默認(rèn)的文件的類型
  private $maxsize=2000000;   //默認(rèn)文件的大小
  private $israndname=true; //是否使用隨機文件名
  private $originName;  //源文件名稱
  private $tmpFileName;  //臨時文件名
  private $fileType;    //文件類型
  private $fileSize;   //文件的大小
  private $newFileName;  //新文件的名稱
  private $errorNum;  //錯誤號
  private $errorMess=""; //用來提示錯誤報告
  //用于文件初始化的函數(shù)
  function __construct($options=array()){
   foreach($options as $key=>$val){
    $key=strtolower($key);//設(shè)置屬性名稱均為小寫
    //get_class_vars(get_class($this))
    //獲取當(dāng)前類的所有的屬性
    if(!in_array($key,get_class_vars(get_class($this)))){
     continue; 
    }
    else
    {
     $this->setOption($key,$val);
    }
   }
  }

  //定義不同的錯誤級別
  private function getError(){
   $str="<font color='red'>上傳文件{$this->originName}時出錯:";


   switch($this->errorNum){
    case 4:
     $str.="文件沒有被上傳";
     break;
    case 3:
     $str.="文件只有部分上傳";
     break;
    case 2:
     $str.="上傳文件超過了HTML表單中規(guī)定的MAX_FILE_SIZE選項的值";
     break;
    case 1:
     $str.="上傳文件吵過了php.ini中upload_max_filesize選項的值";
     break;
    case -1:
     $str.="未允許的類型";
     break;
    case -2:
     $str.="上傳文件過大,不能超過{$this->maxSize}個字節(jié)";
     break;
    case -3:
     $str.="上傳失敗";
     break;
    case -4:
     $str.="建立存放上傳目錄失敗,請重新指定上傳目錄";
     break;
    case -5:
     $str.="必須指定上傳文件的路徑";
     break;
    default:
     $str.="未知的錯誤";

   }

   return $str."</font><br/>";
  }

  //為成員屬性賦值的函數(shù)
  private function setOption($key,$val){
   $this->$key=$val;
  }
  //用于檢查上傳文件的路徑
  private function checkFilePath(){
   //如果文件路徑為空
   if(empty($this->filepath)){
    $this->setOption('errorNum',-5);
    return false;
   }
   //判斷路徑是否存在并且是否可寫
   if(!file_exists($this->filepath)||!is_writable($this->filepath)){
    //@是錯誤抑制符  @ 是忽略錯誤提示,使其錯
    //誤消息不會顯示在程序里
    if(!@mkdir($this->filepath,0755)){
     $this->setOption('errorNum',-4);
     return false;
    }
   }
   return true;
  }

  //檢查文件大小的函數(shù)
  private function checkFileSize(){
   if($this->fileSize>$this->maxsize){
    $this->setOption("errorNum",-2);
    return false;
   }
   else
   {
    return true;
   }
  
  }

  //檢查上傳文件的類型
  private function checkFileType(){
   if(in_array(strtolower($this->fileType),$this->allowtype))
   {
    return true;
   }
   else
   {
    $this->setOption("errorNum",-1);
    return false;
   }
  }
  //上傳一個文件
  function uploadFile($fileField){
   $return=true;
   $name=$_FILES[$fileField]["name"]; //post提交的名稱
   $tmp_name=$_FILES[$fileField]["tmp_name"];  //上傳時的臨時文件名
   $size=$_FILES[$fileField]["size"];
   $error=$_FILES[$fileField]["error"];
   if($this->setFiles($name,$tmp_name,$size,$error)){
    if($this->checkFileSize() && $this->checkFileType()){
     $this->setNewFileName();
     if($this->copyFile())
     {
      $return=true;
     }
     else
     {
      $return=false;
     }
    }
    else
    {
     $return=false;
    } 
   }
   else
   {
    $return=false;
   }
   //檢查文件的路徑是否存在錯誤
   if(!$this->checkFilePath()){
    $this->errorMess=$this->getError();
    return false;
   }

   if(!$return)
   {
    $this->errorMess=$this->getError();
   }
   return $return;
  }
  //設(shè)置和$_FILES有關(guān)的內(nèi)容
  private function setFiles($name="",$tmp_name="",$size=0,$error=0){
   $this->setOption("errorNum",$error);
   if($this->errorNum){
    return false;
   }
   $arrstr=explode(".",$name);
   $this->setOption("fileType",strtolower($arrstr[count($arrstr)-1]));
   $this->setOption("originName",$name);
   $this->setOption("tmpFileName",$tmp_name);
   $this->setOption("fileSize",$size);
   return true;
  }

  //用于獲取上傳文件后文件的名稱
  function getNewFileName(){
   return $this->newFileName.'上傳成功!';
  }


  //上傳文件失敗時,顯示錯誤信息的函數(shù)
  function getErrorMsg(){
   return $this->errorMess; 
  }
  private function proRandName(){
   $filename=date("YmdHis").rand(100,999);
   return $filename.".".$this->fileType;
  } 

  //設(shè)置上傳后的文件名稱
  private function setNewFileName(){
   if($this->israndname){
    $this->setOption('newFileName',$this->proRandName());
   }
   else
   {
    $this->setOption('newFileName',$this->originName);
   }
  }

  //拷貝文件
  private function copyFile(){
   if(!$this->errorNum){
    $filepath=rtrim($this->filepath,'/')."/";
    $filepath.=$this->newFileName;
    //將文件拷貝到指定的路徑當(dāng)中
    if(@move_uploaded_file($this->tmpFileName,$filepath)){
     return true;
    }
    else
    {
     $this->setOption('errorNum',-3);
     return false;
    }
   }
  }
 
 
 }

?>

標(biāo)簽:

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:用C語言寫的一個萬年歷

下一篇:java gzip壓縮解壓縮代碼