springmvc上传文件方法及注意事项

本文基于注解的配置,敬请留意  基于注解整合

一。springmvc为我们提供两种上传方式配置:

1)org.springframework.web.multipart.commons.CommonsMultipartResolver (基于commons-fileupload.jar)

2) org.springframework.web.multipart.support.StandardServletMultipartResolver (基于servlet3.0+)

二。配置方式基于commons-fileupload.jar

1)在先前的类DispacherConfig里添加如下代码:

 1 /**
 2      * 此处注意bean的名字一定起名为multipartResolver
 3      * @return
 4      */
 5     @Bean
 6     public CommonsMultipartResolver multipartResolver() {
 7         CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver();
 8         commonsMultipartResolver.setDefaultEncoding(propertyConfig.getUploadDefaultEncoding());
 9         commonsMultipartResolver.setMaxUploadSize(1024 * 1024 * propertyConfig.getMaxUploadSize());//字节为单位
10         return commonsMultipartResolver;
11     }

注意bean的名字一定为:multipartResolver,贼恶心,曾经起别的名字死活报错

2)在先前的application.properties添加如下代码:

#注意以兆为单位
spring.web.max.upload.size=30
spring.web.fileupload.encoding=utf-8

3)更改propertyConfig类添加对应的属性:

    @Value("${spring.web.max.upload.size}")
    private Integer maxUploadSize;

    @Value("${spring.web.fileupload.encoding}")
    private String uploadDefaultEncoding="utf-8";

    public String getUploadDefaultEncoding() {
        return uploadDefaultEncoding;
    }

    public Integer getMaxUploadSize() {
        return maxUploadSize;
    }

三。配置方式基于servlet3.0+

此时我们需要在MyWebAppInitializer里重写 customizeRegistration 方法

 1  /**
 2      * servlet3.0+ 上传文件
 3      * 单个文件最大5M
 4      * 总请求最大20M
 5      * @param registration
 6      */
 7     @Override
 8     protected void customizeRegistration(ServletRegistration.Dynamic registration) {
 9         String temp = System.getProperty("java.io.tmp");
10         MultipartConfigElement multipartConfigElement = new MultipartConfigElement(temp, 5242880, 20971520, 0);
11         registration.setMultipartConfig(multipartConfigElement);
12     }

在DispacherConfig里添加如下bean

1  @Bean
2     public MultipartResolver multipartResolver() {
3         StandardServletMultipartResolver standardServletMultipartResolver = new StandardServletMultipartResolver();
4         return standardServletMultipartResolver;
5     }

注意bean的名字一定为:multipartResolver

如果您想通过配置实现,则需在web.xml里配置代码:

 1  <servlet>
 2         <servlet-name>dispatcher</servlet-name>
 3         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 4         <load-on-startup>1</load-on-startup>
 5         <multipart-config>
 6             <file-size-threshold>0</file-size-threshold>
 7             <location>c:/tmp</location>
 8             <max-file-size>2000000</max-file-size>
 9             <max-request-size>40000000</max-request-size>
10         </multipart-config>
11     </servlet>
12     <servlet-mapping>
13         <servlet-name>dispatcher</servlet-name>
14         <url-pattern>*.form</url-pattern>
15     </servlet-mapping>

同样需要在spring-bean里的配置:

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

四。在controller中实现文件上传

创建控制器UploadController并写相关上传代码:

 1 @PostMapping("/upload")
 2     public String upload(@RequestParam(name = "file")MultipartFile file) throws IOException {
 3         System.out.println(file.getOriginalFilename());//获取文件名
 4         FilenameUtils.getExtension(file.getOriginalFilename());//获取文件类型
 5         /*
 6             省略拼接文件地址代码
 7             。。。
 8          */
 9         file.transferTo(new File("上传目标文件地址"));
10
11         return "uploadSuccess";
12     }

原文地址:https://www.cnblogs.com/niechen/p/8179154.html

时间: 2024-08-25 23:23:46

springmvc上传文件方法及注意事项的相关文章

iOS 网络请求 NSURLSession 的上传文件方法

NSURLSession/NSURLConnection的上传文件方法 此篇文章的理论基础主要是与HTTP网络通信协议相关.为集中精力,可以先把TCP/IP协议这些置之不理,也就是先只关注HTTP的请求和响应的结构.HTTP完整的原理内容就此略过.在此只略提相关内容.文中涉及的设计源码可以通过这里获取 https://github.com/wuqingjian2015/uploadHelper,有意者可以去看看. HTTP是干什么用的呢? 先考虑一下以下应用过程: 从客户端向服务器端发起一个请求

2. SpringMVC 上传文件操作

1.创建java web项目:SpringMVCUploadDownFile 2.在项目的WebRoot下的WEB-INF的lib包下添加如下jar文件 1 com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar 2 com.springsource.net.sf.cglib-2.2.0.jar 3 com.springsource.org.aopalliance-1.0.0.jar 4 com.springsource.org.apache.commo

springmvc上传文件,抄别人的

SpringMVC中的文件上传 分类: SpringMVC 2012-05-17 12:55 26426人阅读 评论(13) 收藏 举报 stringuserinputclassencoding 这是用的是SpringMVC-3.1.1.commons-fileupload-1.2.2和io-2.0.1 首先是web.xml [html] view plaincopyprint? <?xml version="1.0" encoding="UTF-8"?>

SpringMVC上传文件总结

如果是maven项目 需要在pom.xml文件里面引入下面两个jar包 <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>com

SpringMVC上传文件的三种解析方式

springMVC上传文件后,在action解析file文件的三种方式. jsp页面的写法: <form action="parserUploadFile1" method="post" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="submit"

springmvc 上传文件时的错误

使用springmvc上传文件一直失败,文件参数一直为null, 原来是配置文件没写成功. <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 最大上传尺寸 B单位 1M= 1024*1024 --> <property name="maxUploadSize&

springmvc 上传文件的问题

今天用springmvc 上传文件的时候 报错 org.apache.catalina.connector.RequestFacade cannot be cast to org.springframework.web.multipart.MultipartHttpServletRequest 网上查找原因 说的有如下几种: 1.表单form 上没有 enctype="multipart/form-data"   这个属性 2.配置文件: <bean id="multi

SpringMVC上传文件(图片)并保存到本地

SpringMVC上传文件(图片)并保存到本地 小记一波~ 基本的MVC配置就不展示了,这里给出核心代码 在spring-mvc的配置文件中写入如下配置 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize">

SpringMVC上传文件的三种方式(转载)

直接上代码吧,大伙一看便知 这时:commonsmultipartresolver 的源码,可以研究一下 http://www.verysource.com/code/2337329_1/commonsmultipartresolver.java.html 前台: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 <%@ page language="java" contentTy