SpringMVC让文件上传变得更加便捷
1.首先是前端页面表单提交 enctype="multipart/form-data"
2.根据servlet的版本选择相应的文件下载帮助bean类
<!-- 当前我的servlet容器版本是2.5的 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="200000"></property>
</bean>
<!-- 当前我的servlet容器版本是3.0的 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.support.StandardServletMultipartResolver">
</bean>
值得注意的是3.0后servlet上传文件是不需要借助commons-fileupload这些第三方jar包的,他都是注解标注实现的,。。。。
所以在web.xml文件还需要配置
至于怎么查看servlet的版本可以百度一下
不管是3.0还是3.0以下Controller类里的写法都差不多,实现思路都是靠自己要怎么写就怎么写, 关键就是 这个MultipartFile接口,你上传的文件属性必须由这个接口
的对象来接受,然后对其进行操作,以下是该接口的方法截图:
这是需要导入的jar包:
1.首先是前端页面表单提交 enctype="multipart/form-data"
2.根据servlet的版本选择相应的文件下载帮助bean类
<!-- 当前我的servlet容器版本是2.5的 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="200000"></property>
</bean>
<!-- 当前我的servlet容器版本是3.0的 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.support.StandardServletMultipartResolver">
</bean>
值得注意的是3.0后servlet上传文件是不需要借助commons-fileupload这些第三方jar包的,他都是注解标注实现的,。。。。
所以在web.xml文件还需要配置
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/springmvc.xml</param-value>
</init-param>
<multipart-config>
<file-size-threshold>20000</file-size-threshold>
</multipart-config>
</servlet>
这里面的
<multipart-config>
这个节点,通过该节点可以配置相应的文件上传参数
至于怎么查看servlet的版本可以百度一下
以下摘抄我的controller类里一段保存图片代码
@RequestMapping("/save")
public String save(
HttpServletRequest httpServletRequest,
Student student, Model model) {
String path = httpServletRequest.getRealPath("/images") + "/"
+ student.getId() + ".jpg";
if (student.getImages() != null) {
MultipartFile multipartFile = student.getImages() ;
File dest = new File(path);
try {
multipartFile.transferTo(dest);
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
model.addAttribute("student", student);
return "detail";
}
不管是3.0还是3.0以下Controller类里的写法都差不多,实现思路都是靠自己要怎么写就怎么写, 关键就是 这个MultipartFile接口,你上传的文件属性必须由这个接口
的对象来接受,然后对其进行操作,以下是该接口的方法截图:
查看源代码会发现开发人员已经把注释写明白在里面了。
有兴趣的也可以参考帮助文档http://docs.spring.io/spring/docs/4.2.8.RELEASE/spring-framework-reference/htmlsingle/#mvc-multipart 在21.10的章节。