该类处理单文件或者多文件上传,只需要设定简单的几个参数则可,该类最大的特点在于,文件上传完毕以后,可即时返回文件上传的的相关信息,比如文件的大小,类别,文件名,错误信息等,根据返回的文件信息帮助你及时将信息写入数据库中. <?php /** * 类名:upfile * 作用:处理文件上传 * 说明,该类处理单个或者多个文件上传,使用该类时,只需要实列化该类 * 例: * $up = upfile() * $up->update_file($_FILE['filename']) * * $up->update_file 函数返回一个数组,如果是多文件上传,则为多维数据。 * 数组的内容: * $fileInfo['file_size'] 上传文件的大小 * $fileInfo['file_suffix'] 上传文件的类型 * $fileInfo['file_name'] 上传文件的名字 * $fileInfo['error'] 上传文件产生的错误 * * @author 赵红健[游天小虾] * email:328742379@qq.com * qq交流群:69574955 聚义堂-网页制作交 */ class upfile { public $fCount = 1; //上传文件的数量 public $fType = array('jpg','jpeg','gif','png'); //文件格式 public $fSize = 1024; //文件大小单位kb public $fDir = 'test/'; //文件存放目录 public $errorMsg = ''; //产生的临时错误信息 /** *函数名:get_tmp_file($putFile) *作用:取得上传的临时文件名 *@param array $putFile *@return string $upImg 返回临时文件名 */ function get_tmp_file($putFile){ if($this->fCount == 1){ $tmpFile = $putFile['tmp_name']; }else{ for($i=0;$i<$this->fCount;$i++){ $tmpFile[] = $putFile['tmp_name'][$i]; } } return $tmpFile; } /** *函数名:get_suffix($fileName) *作用:取得文件的后缀名 *@param file $fileName *@return string $suffixName 返回后缀名 */ function get_suffix($fileName){ $link = pathinfo($fileName); $suffixName = strtolower($link['extension']); return $suffixName; } /** *验证文件大小 *@author 赵红健 *@param $fileSize *@return booln */ function check_file_size($fileSize){ $this->errorMsg = ''; if($fileSize/1000 > $this->fSize){ $this->errorMsg = '警告:文件超出大小!'; return false; }else{ return true; } } /** *验证文件类型是否合法 *@author 赵红健 *@param $fileSuffix *@return booln */ function check_file_suffix($fileSuffix){ $this->errorMsg = ''; if(!in_array($fileSuffix,$this->fType)){ $this->errorMsg = '警告:文件类型不在允许范围内!'; return false; }else{ return true; } } /** *移动临时文件 *@author 赵红健 *@param $fileSuffix *@return booln */ function move_temp_file($tmpFile,$targetFile){ $this->errorMsg = ''; if(!move_uploaded_file($tmpFile,$targetFile)){ $this->errorMsg = '警告:文件移动失败!'; return false; }else{ return true; } } /** *函数名:update_file($putFile) *作用:上传文件 *@param array $putFile *@return array 文件信息 */ function update_file($putFile){ $tmpFile = $this->get_tmp_file($putFile); if(!file_exists($this->fDir)){ $this->errorMsg[] = '错误:目录'.$this->fDir.'不存在'; return $this->errorMsg; } $this->fDir = substr($this->fDir,strlen($this->fDir)-1,1)=='/'?$this->fDir:$this->fDir.'/'; if(!is_array($putFile['size'])){ $fileInfo['file_size'] = $putFile['size']; if(!$this->check_file_size($fileInfo['file_size'])){ $fileInfo['error'] = $this->errorMsg; return $fileInfo; } $fileInfo['file_suffix'] = $this->get_suffix($putFile['name']); if(!$this->check_file_suffix($fileInfo['file_suffix'])){ $fileInfo['error'] = $this->errorMsg; return $fileInfo; } $fileInfo['file_name'] = date('ymdhms').'.'.$fileInfo['file_suffix']; if(!$this->move_temp_file($tmpFile,$this->fDir.$fileInfo['file_name'])){ $fileInfo['error'] = $this->errorMsg; return $fileInfo; } return $fileInfo; }else{ for($i=0;$i<$this->fCount;$i++){ $fileInfo[$i]['file_size'] = $putFile['size'][$i]; if(!$this->check_file_size($fileInfo[$i]['file_size'])){ $fileInfo[$i]['error'] = $this->errorMsg; continue; } $fileInfo[$i]['file_suffix'] = $this->get_suffix($putFile['name'][$i]); if(!$this->check_file_suffix($fileInfo[$i]['file_suffix'])){ $fileInfo[$i]['error'] = $this->errorMsg; continue; } $fileInfo[$i]['file_name'] = date('ymdhms').rand().'.'.$fileInfo[$i]['file_suffix']; if(!$this->move_temp_file($tmpFile[$i],$this->fDir.$fileInfo[$i]['file_name'])){ $fileInfo[$i]['error'] = $this->errorMsg; continue; } } return $fileInfo; } } } ?>