SpringMVC实现文件上传
程序员文章站
2022-06-03 10:29:50
...
在Web应用中,用户来上传内容是很常见的需求。
配置multipart解析器
DispatcherServlet没有实现解析multipart请求数据的功能。它将任务委托给MultipartResolver接口的实现,通过实现类来解析multipart请求中的内容。
Spring3.1开始,Spring内置了两个MultipartResolver的实现
CommonsMultipartResolver:使用Commons FileUpload解析multipart
StandardServletMultipartResolver:依赖于Servlet3.0对multipart请求的支持
环境准备,使用CommonsMultipartResolver实现类需要导入jar包
在springmvc.xml配置CommonsMultipartResolver解析器
<!--id必须为multipartResolver,否则会有Expected
MultipartHttpServletRequest: is a MultipartResolver configured?-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 请求的编码格式,默认为ISO-8859-1 -->
<property name="defaultEncoding" value="UTF-8"></property>
<!-- 文件上传的大小上限,单位字节 -->
<property name="maxUploadSize" value="5242880"></property>
</bean>
前台上传页面
<form action="${pageContext.request.contextPath }/user/uploadPicture" method="post"
enctype="multipart/form-data">
<input type="file" name="userPicture"><br/>
<input type="submit" value="上传">
</form>
编写后台Controller,使用MultipartFile 接口,来处理multipart
@RequestMapping("uploadPicture")
//userPicture要和前台页面的上传组件name值相同
public String uploadPicture(MultipartFile userPicture) throws Exception{
if(!userPicture.isEmpty()) {
String filename = userPicture.getOriginalFilename();
String filePath = "D://picture";
userPicture.transferTo(new File(filePath+filename));
return "/success.jsp";
}else{
return "/fail.jsp";
}
}
MultipartFile 接口API
Spring提供了MultipartFile接口,为处理multipart数据提供了内容更为丰富的API。
上一篇: 类的另类用法--数据的封装
下一篇: Dijkstra双栈算术表达式求值算法