~会飞的鱼

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  1 class UpTool { 
  2     protected $allowExt = 'jpg,jpeg,gif,bmp,png'; 
  3     protected $maxSize = 1; //1M,M为单位 
  4     protected $errno = 0; // 错误代码 
  5     protected $error = array( 
  6         0=>'无错', 
  7         1=>'上传文件超出系统限制', 
  8         2=>'上传文件大小超出网页表单页面', 
  9         3=>'文件只有部分被上传', 
 10         4=>'没有文件被上传', 
 11         6=>'找不到临时文件夹', 
 12         7=>'文件写入失败', 
 13         8=>'不允许的文件后缀', 
 14         9=>'文件大小超出的类的允许范围', 
 15         10=>'创建目录失败', 
 16         11=>'移动失败' 
 17              
 18     ); 
 19      
 20     public function up($key) { 
 21         if(!isset($_FILES[$key])) { 
 22             return false; 
 23         } 
 24         $f = $_FILES[$key]; 
 25         // 检验上传有没有成功 
 26         if($f['error']) { 
 27             $this->errno = $f['error']; 
 28             return false; 
 29         } 
 30         // 获取后缀 
 31         $ext = $this->getExt($f['name']); 
 32          
 33         // 检查后缀 
 34         if(!$this->isAllowExt($ext)) { 
 35             $this->errno = 8; 
 36             return false; 
 37         } 
 38         // 检查大小 
 39         if(!$this->isAllowSize($f['size'])) { 
 40             $this->errno = 9; 
 41             return false; 
 42         } 
 43         // 通过 
 44         //创建目录 
 45         $dir = $this->mk_dir(); 
 46         if($dir == false) { 
 47             $this->error = 10; 
 48             return false; 
 49         } 
 50      
 51         // 生成随机文件名 
 52         $newname = $this->randName() . '.' . $ext; 
 53         $dir = $dir . '/' . $newname; 
 54         // 移动 
 55         if(!move_uploaded_file($f['tmp_name'],$dir)) { 
 56             $this->errno = 11; 
 57             return false; 
 58         } 
 59         return str_replace(ROOT,'',$dir); 
 60      
 61     } 
 62      
 63      
 64     public function getErr() { 
 65         return $this->error[$this->errno]; 
 66     } 
 67     /* 
 68         parm string $exts 允许的后缀 
 69     */ 
 70     public function setExt($exts) { 
 71         $this->allowExt = $exts; 
 72     } 
 73     public function setSize($num) { 
 74         $this->maxSize = $num; 
 75     } 
 76     /* 
 77         parm String $file 
 78         return String $ext 后缀 
 79     */ 
 80     protected function getExt($file) { 
 81         $tmp = explode('.',$file); 
 82         return end($tmp); 
 83     } 
 84     /* 
 85         parm String $ext 文件后缀 
 86         return bool 
 87         防止大小写的问题 JPG 
 88     */ 
 89     protected function isAllowExt($ext) { 
 90         return in_array(strtolower($ext),explode(',',strtolower($this->allowExt))); 
 91     } 
 92     // 检查文件的大小  
 93     protected function isAllowSize($size) { 
 94         return $size <= $this->maxSize * 1024 * 1024; 
 95     } 
 96     /* 
 97         按日期创建目录的方法 
 98     */ 
 99     protected function mk_dir() { 
100         $dir = ROOT . 'data/images/' . date('Ym/d'); 
101         if(is_dir($dir) || mkdir($dir,0777,true)) { 
102             return $dir; 
103         } else { 
104             return false; 
105         } 
106     } 
107     /* 
108         生成随机文件名 
109     */ 
110     protected function randName($length = 6) { 
111         $str = 'abcdefghijkmnpqrstuvwxyz23456789'; 
112         return substr(str_shuffle($str),0,$length); 
113     } 
114 }

 

posted on 2013-08-30 18:47  ~会飞的鱼  阅读(199)  评论(0编辑  收藏  举报