一个简单的PHP上传函数
/**
* $fileInfo为当前上传的file的名字,例如:$_FILES['pic']
* $uploadPath为将要上传的路径
* $allowExt为允许的扩展名称
* $maxSize为最大为多少个字节(B)这个为2M
* $flag默认为true检测文件是否为真实的文件类型
* @return 错误则返回json_encode的array('msg'=>'错误信息','status'=>'0')
* 正确则返回json_encode的array('newName'=>'图片的名称及相对路径','size'=>'图片的大小','type'=>'图片的类型','status'=>'1')
*
*/
function uploadFile($fileInfo,$uploadPath = './uploads',$allowExt=array('jpeg','jpg','png','gif'),$maxSize = 2097152, $flag=true) { $arr = array(); //判断错误号 if($fileInfo['error'] > 0) { //匹配错误信息 switch($fileInfo['error']) { case 1: $mes = '上传文件超过了PHP配置文件中upload_max_filesize选项的值'; break; case 2: $mes = '超过了表单MAX_FILE_SIZE限制的大小'; break; case 3: $mes = '文件部分被上传'; break; case 4: $mes = '没有选择上传文件'; break; case 6: $mes = '没有找到临时目录'; break; case 7: case 8: $mes = '系统错误'; break; } $arr['msg'] = $mes; $arr['status'] = '0'; return json_encode($arr); } $ext = pathinfo($fileInfo['name'], PATHINFO_EXTENSION); //$allowExt = array('jpeg', 'jpg', 'png', 'gif'); if(!is_array($allowExt)) { $arr['msg'] = '系统错误'; $arr['status'] = '0'; return json_encode($arr); } //检测上传文件的类型 if(!in_array($ext, $allowExt)) { $arr['msg'] = '非法文件类型'; $arr['status'] = '0'; return json_encode($arr); } //$maxSize = 2097152; //2M //检测上传文件大小是否符合规范 if($fileInfo['size']>$maxSize) { $arr['msg'] = '上传文件过大'; $arr['status'] = '0'; return json_encode($arr); } //检测图片是否为真实的图片类型 //$flag = true; if($flag) { if(!getimagesize($fileInfo['tmp_name'])) { $arr['msg'] = '不是真实的文件类型'; $arr['status'] = '0'; return json_encode($arr); } } //检测文件是否是通过HTTP POST方式上传上来的 if(!is_uploaded_file($fileInfo['tmp_name'])) { $arr['msg'] = '文件不是通过HTTP POST方式上传的'; $arr['status'] = '0'; return json_encode($arr); } //$uploadPath = 'uploads'; if(!file_exists($uploadPath)) { mkdir($uploadPath, 0777, true); chmod($uploadPath, 0777); } $uniName = md5(uniqid(microtime(true), true)) . '.' . $ext; $destination = $uploadPath . '/' . $uniName; if(!@move_uploaded_file($fileInfo['tmp_name'], $destination)) { $arr['msg'] = '文件移动失败'; $arr['status'] = '0'; return json_encode($arr); } $arr['newName'] = $destination; $arr['size'] = $fileInfo['size']; $arr['type'] = $fileInfo['type']; $arr['status'] = '1'; return json_encode($arr); }