首页 > 代码库 > PHP 上传文件类

PHP 上传文件类

<?php/** *  * @name upload.class.php * 上传文件类 * @author Peter * @createtime 2014-11-20 10:30:29 *  */class upload{		public $max_size; //上传file大小		public $allow_types; //上传文件类型		public $file_name; //文件名		public $errmsg; //错误提示		public $uploaded; //后的文件名			public $save_path; //上传文件保存路径		private $file_type; //文件类型		private $ext; //上传文件扩展名		/*	 * 构造函数	 * @access public	 * @string $save_path 上传目标文件	 * @string $file_name 上传后的文件名	 * @string $allow_types 允许上传的文件类型	 * */		function __construct($save_path = "./upload/",$file_name=‘date‘,$allow_types = ‘‘)	{		$this->file_name = $file_name;//默认用时间命名		$this->save_path = (preg_match(‘/\/$/‘,$save_path))?$save_path:$save_path.‘/‘;		$this->allow_types = $allow_types == ‘‘ ? ‘jpg|gif|png‘ : $allow_types;		$this->max_size = 1024*1024*2;	}		/*	 * 上传文件	 * @access public	 * @param $file 等待上传的文件	 * @return Boolean	 * */	 	 public function upload_file($files)	 {	 	$info = $_FILES[$files];				$name = $info[‘name‘];		$type = $info[‘type‘];		$tmp_name = $info[‘tmp_name‘];		$error = $info[‘error‘];		$size = $info[‘size‘];				switch ($error) {			case ‘0‘:				$this->errmsg = ‘‘;				break;			case ‘1‘:				$this->errmsg = ‘文件大小超过了php.ini中的限制‘;				break;			case ‘2‘:				$this->errmsg = ‘文件大小超过了浏览器的限制‘;				break;			case ‘3‘:				$this->errmsg = ‘文件部分被上传‘;				break;			case ‘4‘:				$this->errmsg = ‘没有找到要上传的文件‘;				break;			case ‘5‘:				$this->errmsg = ‘文件写入临时文件出错‘;				break;			default:				$this->errmsg = "文件上传错误";				break;		}				if($error == 0 && is_uploaded_file($tmp_name)){						if($this->check_file_type($name) == false){				return false;			}						if($size > $this->max_size){				$this->errmsg = "上传文件<font color=‘red‘>".$name."</font>太大";				return false;			}					}				$this->set_save_path();				$new_name = $this->file_name != ‘date‘ ? $this->file_name.‘.‘.$this->ext : date(‘YmdHis‘).‘.‘.$this->ext;//设置新文件名				$this->uploaded = $this->save_path.$new_name;//上传后的文件名 		//移动文件 		if(move_uploaded_file($tmp_name,$this->uploaded)){ 			$this->errmsg = ‘文件<font color=red>‘.$this->uploaded.‘</font>上传成功!‘; 			return true; 		}else{ 			$this->errmsg = ‘文件<font color=red>‘.$this->uploaded.‘</font>上传失败!‘; 			return false; 		}	 }	 	 /*	  * 检查上传文件类型	  * @access private	  * @param string $filename 等待检查的文件名	  * @return 如果通过返回true 不通过返回false	  * */	 	 private function check_file_type($filename)	 {	 	$ext = $this->get_file_type($filename);				$this->ext = $ext;				$allow_types = explode(‘|‘, $this->allow_types);//允许上传文件类型用|分割				if(in_array($ext, $allow_types)){			return true;		}else{			$this->errmsg = "上传文件".$filename."类型错误";			return false;		}	 }		/*	 * 取得上传文件类型	 * @access private	 * @param string $filename 要取得文件类型的文件名	 * @return string 文件类型	 * */	 	 private function get_file_type($filename)	 {	 	$info = pathinfo($filename);				$ext = $info[‘extension‘];				return $ext;	 }	 	 /*	  *设置上传后的保存路径 	  * */	  	 private function set_save_path()	 {	 	$this->save_path = (preg_match(‘/\/$/‘,$this->save_path)) ? $this->save_path : $this->save_path . ‘/‘;				if(!is_dir($this->save_path)){ 			//如果目录不存在,创建目录 			$this->set_dir($this->save_path); 		} 	 }	 	 /*	  * 创建目录	  * @access private	  * @param string $dir 要创建目录的路径	  * @return boolean 失败的时候返回fales 	  * */	  	 private function set_dir($dir)	 {	 	//检查路径是否存在 		if(is_dir($dir)){ 			$this->errmsg = ‘需要创建的文件夹已经存在!‘;		} 		$dir = explode(‘/‘, $dir);		$d = "";		foreach($dir as $v){ 			if($v){ 				$d .= $v . ‘/‘; 				if(!is_dir($d)){ 					$state = mkdir($d, 0777); 					if(!$state) 					$this->errmsg = ‘在创建目录<font color=red>‘ . $d . ‘时出错!‘; 				} 			} 		} 		return true; 	}		}/*End of file upload.class.php*/

  

PHP 上传文件类