Spring MVC为文件上传提供了直接支持,这种支持是通过即插即用的MultipartResolver实现的。Spring用Jakarta Commons FileUpload技术实现了一个MultipartResolver实现类-CommonsMultipartResolver。
Spring MVC默认上下文没有装配MultipartResolver,因此默认情况下不能处理文件的上传工作,如果想使用Spring的文件上传功能,需要现在上下文配置MultipartResolver。
配置MultipartResolver
defaultEncoding必须和用户JSP的pageEncoding属性一致,以便正确的解析表单的内容。
为了让CommonsMultipartResolver正确工作,必须将Jakarta Commons FileUpload以及Jakarta Commons io的类包添加到类路径下。
编写一个简单的文件上传程序
-
首先需要引入jar包commons-fileupload。这个jar依赖于commons-io,因此也需要引入commons-io。
-
之后在SpringMVC配置文件中进行配置
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="1024000"></property>
</bean>
<property>中配置的是上传文件的最大大小。此处设为1024000
- 编写jsp文件
<form action="testUploadFile" method="post" enctype="multipart/form-data">
File: <input type="file" name="file"/>
<br>
Desc: <input type="text" name="desc"/>
<br>
<input type="submit" value="Submit"/>
</form>
- 之后编写后台的逻辑
@RequestMapping("testUploadFile")
public String testUploadFile(@RequestParam("desc") String desc,
@RequestParam("file") MultipartFile file) throws IOException{
System.out.println("Desc: " + desc);
System.out.println("File name: " + file.getOriginalFilename());
System.out.println("File Inputstream: " + file.getInputStream());
return "success";
}
-
控制台输出结果:
网友评论