SpringMvc的文件上传时通过MultipartResolver(Multipart解析器)处理的,对于MultipartResolver而言它只是一个接口,它有两个实现类
CommonsMultipartResolver:依赖于Apache下的jakarta Common FileUpload 项目解析Multipart请求,可以在Spring各个版本中使用,只是它要依赖于第三方包才得以实现,后面的案例中使用这个-
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
StandardServletMultipartResolver:是Spring3.1版本后的产物,它依赖于Servlet3.0或者更高版本的实现,它不用依赖于第三方包
在SpringMvc配置文件中配置MultipartResolver,"multipartResolver"是Spring约定好的名字不可以修改.
<bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver" id="multipartResolver">
<property name="defaultEncoding" value="utf-8"/>
<property name="maxUploadSize" value="#{10*1024*1024}"/>
</bean>
上传文件表单
<form action="/test" enctype="multipart/form-data" method="post">
头像<input type="file" name="headimg">
<br>
<input type="submit" value="提交">
</form>
处理请求的Controller
@RequestMapping(value = "/test",method = RequestMethod.POST)
public String test(@RequestParam("headimg") MultipartFile file) throws IOException {
File file1 =new File("D:/"+file.getOriginalFilename());//创建file对象
file.transferTo(file1);//将接受的文件存储
return "success";
}
tomcat启动后测试就可以看到文件上传成功了
springmvc配置文件
<bean class="org.springframework.web.multipart.support.StandardServletMultipartResolver" id="multipartResolver">
</bean>
web.xml配置
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<multipart-config>
<location>D:/</location>
<max-request-size>5242880</max-request-size>
<file-size-threshold>20000000</file-size-threshold>
</multipart-config>
</servlet>
然后写好表单和Controller,就可以测试了
原文:https://www.cnblogs.com/huameixiao/p/15050534.html