HTTP上载是基于 RFC 1867 标准,Spring MVC 利用Apache commons fileupload 组件支持了这个标准,
这样利用Spring MVC提供的API可以轻松的获得上载文件:
实现步骤:
1.配置jar包依赖(会和原先的jar包有隐式的依赖冲突,删掉原先不必要的jar包就可以了)
input框中的type属性设置为file,必须配置name属性,服务器在接收的时候要匹配名字;
这样利用Spring MVC提供的API可以轻松的获得上载文件:
实现步骤:
1.配置jar包依赖(会和原先的jar包有隐式的依赖冲突,删掉原先不必要的jar包就可以了)
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
2.配置spring上载解析器
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="5000000"/>
<property name="defaultEncoding" value="utf-8"></property>
</bean>
3.在前端的form表单中提交文件,要设置form表单的参数 enctype="multipart/form-data"
input框中的type属性设置为file,必须配置name属性,服务器在接收的时候要匹配名字;
<form enctype="multipart/form-data"
action="upload.do" method="post">
姓名:<input type="text" name="username"><br>
照片:<input name="userfile1" type="file"><br>
<input type="submit" value="上传">
</form>
4.控制器中处理上载请求:
/**
* 处理上载请求
*/
@RequestMapping(value="upload.do", method=RequestMethod.POST)
@ResponseBody
public ResponseResult<Void> upload(
@RequestParam("userfile1") MultipartFile image,
@RequestParam("username") String username,
HttpServletRequest request)
throws IOException {
//打桩
System.out.println(username);
System.out.println(image);
//获取上载文件信息
System.out.println(image.getContentType());
System.out.println(image.getName());
System.out.println(image.getOriginalFilename());
System.out.println(image.getSize());
//保存到文件系统
String path="/images/upload";//WEB路径
path = request.getServletContext().getRealPath(path);//实际路径
System.out.println(path);
//创建upload文件夹
File dir = new File(path);
dir.mkdir();
File file=new File(dir,image.getOriginalFilename());
//将上载文件保存到文件中
image.transferTo(file);
//返回响应结果(ResponseResult<Void>这个类中封装了返回给页面的状态信息,响应消息和响应数据)
ResponseResult<Void> rr=new ResponseResult<Void>();
rr.setState(ResponseResult.STATE_OK);
rr.setMessage("上载成功");
return rr;
}