圖片上傳類

 

  
  
  
  
  1. class UpTool { 
  2.     protected $allowExt = 'jpg,jpeg,gif,bmp,png'
  3.     protected $maxSize = 1; //1M,M爲單位 
  4.  
  5.     protected $errno = 0; // 錯誤代碼 
  6.     protected $error = array
  7.         0=>'無錯'
  8.         1=>'上傳文件超出系統限制'
  9.         2=>'上傳文件大小超出網頁表單頁面'
  10.         3=>'文件只有部分被上傳'
  11.         4=>'沒有文件被上傳'
  12.         6=>'找不到臨時文件夾'
  13.         7=>'文件寫入失敗'
  14.         8=>'不容許的文件後綴'
  15.         9=>'文件大小超出的類的容許範圍'
  16.         10=>'建立目錄失敗'
  17.         11=>'移動失敗' 
  18.              
  19.     ); 
  20.  
  21.      
  22.     public function up($key) { 
  23.         if(!isset($_FILES[$key])) { 
  24.             return false; 
  25.         } 
  26.  
  27.         $f = $_FILES[$key]; 
  28.  
  29.  
  30.         // 檢驗上傳有沒有成功 
  31.         if($f['error']) { 
  32.             $this->errno = $f['error']; 
  33.             return false; 
  34.         } 
  35.  
  36.  
  37.         // 獲取後綴 
  38.         $ext = $this->getExt($f['name']); 
  39.          
  40.         // 檢查後綴 
  41.         if(!$this->isAllowExt($ext)) { 
  42.             $this->errno = 8; 
  43.             return false; 
  44.         } 
  45.  
  46.         // 檢查大小 
  47.         if(!$this->isAllowSize($f['size'])) { 
  48.             $this->errno = 9; 
  49.             return false; 
  50.         } 
  51.  
  52.         // 經過 
  53.  
  54.         //建立目錄 
  55.         $dir = $this->mk_dir(); 
  56.  
  57.         if($dir == false) { 
  58.             $this->error = 10; 
  59.             return false; 
  60.         } 
  61.      
  62.         // 生成隨機文件名 
  63.         $newname = $this->randName() . '.' . $ext
  64.         $dir = $dir . '/' . $newname
  65.  
  66.  
  67.         // 移動 
  68.         if(!move_uploaded_file($f['tmp_name'],$dir)) { 
  69.             $this->errno = 11; 
  70.             return false; 
  71.         } 
  72.  
  73.         return str_replace(ROOT,'',$dir); 
  74.      
  75.     } 
  76.      
  77.      
  78.     public function getErr() { 
  79.         return $this->error[$this->errno]; 
  80.     } 
  81.  
  82.  
  83.     /* 
  84.         parm string $exts 容許的後綴 
  85.     */ 
  86.     public function setExt($exts) { 
  87.         $this->allowExt = $exts
  88.     } 
  89.  
  90.     public function setSize($num) { 
  91.         $this->maxSize = $num
  92.     } 
  93.  
  94.     /* 
  95.         parm String $file 
  96.         return String $ext 後綴 
  97.     */ 
  98.     protected function getExt($file) { 
  99.         $tmp = explode('.',$file); 
  100.         return end($tmp); 
  101.     } 
  102.  
  103.     /* 
  104.         parm String $ext 文件後綴 
  105.         return bool 
  106.  
  107.         防止大小寫的問題 JPG 
  108.     */ 
  109.     protected function isAllowExt($ext) { 
  110.         return in_array(strtolower($ext),explode(',',strtolower($this->allowExt))); 
  111.     } 
  112.  
  113.  
  114.     // 檢查文件的大小  
  115.     protected function isAllowSize($size) { 
  116.         return $size <= $this->maxSize * 1024 * 1024; 
  117.     } 
  118.  
  119.  
  120.     /* 
  121.         按日期建立目錄的方法 
  122.     */ 
  123.     protected function mk_dir() { 
  124.         $dir = ROOT . 'data/p_w_picpaths/' . date('Ym/d'); 
  125.  
  126.         if(is_dir($dir) || mkdir($dir,0777,true)) { 
  127.             return $dir
  128.         } else { 
  129.             return false; 
  130.         } 
  131.     } 
  132.  
  133.  
  134.     /* 
  135.         生成隨機文件名 
  136.     */ 
  137.  
  138.     protected function randName($length = 6) { 
  139.         $str = 'abcdefghijkmnpqrstuvwxyz23456789'
  140.         return substr(str_shuffle($str),0,$length); 
  141.     } 
  142.  
  143.  
相關文章
相關標籤/搜索