SpringMVC文件上传
SpringMVC对文件上传提供了直接的支持,这种支持是通过即插即用的MultipartResolver
实现的。Spring用Jakarta Commons FileUpload技术实现了一个MultipartResolver
实现类:CommonsMultipartResolver
SpringMVC上下文中默认没有装配MultipartResolver
,因此默认情况下不能处理文件的上传工作,如果想使用Spring的文件上传功能,需在上下文中配置MultipartResolver
。
<!-- 配置MultipartResolver -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"></property>
<property name="maxUploadSize" value="10240000"></property>
</bean>
defaultEncoding
必须和用户JSP的pageEncoding
属性一致,以便正确的解析表单的内容。
要使用SpringMVC上传文件,还有导入连个jar包,FileUpload和IO包:
commons-fileupload-1.3.2.jar
commons-io-2.5.jar
如下的例子,上传的表单如下:
注意method="post" enctype="multipart/form-data"
<form action="springmvc/testFileUpload" method="post" enctype="multipart/form-data">
File:<input type="file" name="file"/>
Desc:<input type="text" name="desc"/>
<input type="submit" value="submit"/>
</form>
对应的映射handler如下:
@RequestMapping("/testFileUpload")
public String testFileUpload(@RequestParam("desc") String desc,
@RequestParam("file") MultipartFile file) throws Exception{
System.out.println("desc : "+desc);
System.out.println("OriginalFilename : "+file.getOriginalFilename());
System.out.println("InputStream : "+file.getInputStream());
return "success";
}