【SpringMVC】SpringMVC中使用StandardServletMultipartResolver进行文件上传

来源:互联网 发布:第三季度经济数据 编辑:程序博客网 时间:2024/05/06 04:21

StandardServletMultipartResolver是基于Servlet3.0来处理multipart请求的,所以不需要引用其他jar包,但是必须使用支持Servlet3.0的容器才可以。
以tomcat为例,从Tomcat 7.0.x的版本开始就支持Servlet3.0了

Spring的配置


在applicationConfig.xml文件中添加一个bean:

<bean id="multipartResolver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver"></bean>

bean的id必须为multipartResolver

multipartResolver的相关配置都在web.xml中

web.xml的配置


web.xml的相关配置为,要注意xml中web-app使用的版本,必须是3.0+:

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee         http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"         version="3.1">    <!--Spring MVC的前端控制器-->    <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/springmvc-config.xml</param-value>        </init-param>        <load-on-startup>1</load-on-startup>        <multipart-config>            <!--临时文件的目录-->            <location>d:/tmp/</location>            <!-- 上传文件最大2M -->            <max-file-size>2097152</max-file-size>            <!-- 上传文件整个请求不超过4M -->            <max-request-size>4194304</max-request-size>        </multipart-config>    </servlet>    <servlet-mapping>        <servlet-name>springmvc</servlet-name>        <url-pattern>/</url-pattern>    </servlet-mapping></web-app>

Controller配置


使用MulitpartHttpServletRequest

@RequestMapping(value = "/upload")@ResponseBodypublic JSONObject upload(MultipartHttpServletRequest request) {    JSONObject json = new JSONObject();    json.put("success", false);    try {        MultipartFile file = request.getFile("file");// 与表单input的name相同        File imageFile = new File("d:/1.jpg");// 上传后的文件保存目录及名字        file.transferTo(imageFile);// 将上传文件保存到相应位置        json.put("success", true);        return json;    } catch (Exception e) {        e.printStackTrace();        return json;    }}

使用MultipartFile类型,和@RequestPart注解

@RequestMapping(value = "/upload")@ResponseBodypublic JSONObject upload(@RequestPart("file") MultipartFile file) {    JSONObject json = new JSONObject();    json.put("success", false);    try {        File imageFile = new File("d:/1.jpg");// 上传后的文件保存目录及名字        uploadFileC.transferTo(imageFile);// 将上传文件保存到相应位置        json.put("success", true);        return json;    } catch (Exception e) {        e.printStackTrace();        return json;    }}