springmvc上传文件

SpringMVC文件上传

思路

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或者更高版本的实现,它不用依赖于第三方包

第一种实现基于CommonsMultipartResolver

  • 在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启动后测试就可以看到文件上传成功了

第二种基于StandardServletMultipartResolver

  • 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