Spring MVC 实现文件上传通过MultipartResolver(接口)实现,Spirng用Jakarta Commons FileUpload技术实现了该接口,具体实现类为CommonsMultipartResovler。
这个类名透露了这个类必须依赖CommonsFileupload 这个jar包,所以我们需要添加这个jar包。
Spring MVC上下文中默认没有装配MultipartResovler,所以需要在上下文中进行配置。配置文件如下:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"></property>
<property name="maxUploadSize" value="10240000"/>
</bean>
这里值限定了部分属性,还可以对上传要求进行更严格的限定。
写好配置文件之后,我们在页面上可以简单的写一个文件上传的表单:
<FORM action="testFileupload" method="post" enctype="multipart/form-data">
File: <input type="file" name="file"/>
Desc:<input type="text" name="desc"/>
<input type="submit" name="提交">
</FORM>
然后就只需要在一个Controller中添加一个处理方法,方法中包括一个用@RequestParam修饰的MultipartFile参数就可以了。
@ResponseBody
@RequestMapping("/testFileupload")
public String testFileupload(@RequestParam("desc") String desc, @RequestParam("file")MultipartFile file) throws IOException {
System.out.println(desc);
System.out.println(new String(file.getBytes()));
return "success";
}
这样就可以实现文件的上传了。