使用spring MVC 获得用户上传的文件
使用CommonsMultipartFile获得文件
1、我们首先需要在*-servle.xml文件中配置一个bean,以用来对客户端发送图片的预处理。
<!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8" />
<!-- 指定所上传文件的总大小,单位字节。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->
<property name="maxUploadSize" value="10240000" />
</bean>
2、我们的后端控制层处理简单如下,即可从前端请求中获取到用户上交的图片:
RequestMapping(value="doctorRegisterAndPic.do")
@ResponseBody
public boolean doctorRegister(@ModelAttribute User user,@RequestParam
String validatecode,@RequestParam CommonsMultipartFile file,HttpSession httpSession) {
System.out.println("医生注册测试");
return loginServiceImpl.registeredDoctor(user, httpSession, validatecode, file);
}
3、处理请求CommonsMultipartFile file文件,对应的处理方法如下:
/**
* 上传图片
* 同时上传
*/
public boolean photoUpload(MultipartFile file,User user) throws IllegalStateException, IOException{
if (file!=null) {// 判断上传的文件是否为空
String path=null;// 文件路径
String type=null;// 文件类型
String fileName=file.getOriginalFilename();// 文件原名称
System.out.println("上传的文件原名称:"+fileName);
String realPath= "C:\\Users\\yangjieyu\\Desktop\\git\\hnust\\user\\";
// 判断文件类型,得到文件
type=fileName.indexOf(".")!=-1?fileName.substring(fileName.lastIndexOf(".")+1, fileName.length()):null;
if (type!=null) {// 判断文件类型是否为空
if ("GIF".equals(type.toUpperCase())||"PNG".equals(type.toUpperCase())||"JPG".equals(type.toUpperCase())) {
// 设置存放图片文件的路径
path=realPath+user.getUsername();
File dir = new File(path);
if(dir.exists()) {
}else {
dir.mkdirs();
}
path = path+"\\"+fileName;
System.out.println("存放图片文件的路径:"+path);
// 转存文件到指定的路径
file.transferTo(new File(path));
System.out.println("文件成功上传到指定目录下");
user.setIdAddress(path);
}else {
System.out.println("不是我们想要的文件类型,请按要求重新上传");
return false;
}
}else {
System.out.println("文件类型为空");
return false;
}
}else {
System.out.println("没有找到相对应的文件");
return false;
}
return true;
}