• spring boot上传附件报错:org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException 文件过大


    https://blog.csdn.net/fxj0720/article/details/80255651

    https://www.freesion.com/article/9245162331/

    实际解决这个问题是在站点的bootstrap.yml上添加如下配置

    spring:
      servlet:
        multipart:
          enabled: true
          max-file-size: 5Mb
          max-request-size: 5Mb

    ---------------------------------------------

    以下是粘贴复制

    ---------------------------------------------

    org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (11963927) exceeds the configured maximum (10485760)

    项目使用的是Spring Boot + Spring Cloud,上传附件报超出自带tomacat限制大小(默认1M)

    解决办法:

    (1)在配置文件(application.properties)加入如下代码

    1.  
      spring.http.multipart.maxFileSize = 10Mb
    2.  
      spring.http.multipart.maxRequestSize=100Mb

    maxFileSize 单个数据大小

    maxRequestSize 是总数据大小

    (2)把如下代码放在启动类上,并在类上加入@Configuration

      1.  
        /**
      2.  
        * 文件上传配置
      3.  
        *
      4.  
        * @return
      5.  
        */
      6.  
        @Bean
      7.  
        public MultipartConfigElement multipartConfigElement() {
      8.  
        MultipartConfigFactory factory = new MultipartConfigFactory();
      9.  
        // 单个数据大小
      10.  
        factory.setMaxFileSize("10240KB"); // KB,MB
      11.  
        /// 总上传数据大小
      12.  
        factory.setMaxRequestSize("102400KB");
      13.  
        return factory.createMultipartConfig();
      14.  
        }

    -----------------------------------------------------------------------

    一、错误原因

    springboot项目在上传较大文件时报错: 
    Maximum upload size exceeded;org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes.

    报错的原因是:springBoot项目自带的tomcat对上传的文件大小有默认的限制,SpringBoot官方文档中展示:每个文件的配置最大为1Mb,单次请求的文件的总数不能大于10Mb。

    二、解决方法

    知道了是tomcat的默认设置限制了上传的文件大小,那我们只需要改变默认设置即可。

    1、在【APPLICATION.PROPERTIES】配置文件中加入如下代码:

    1.  
      # maxFileSize 单个数据大小
    2.  
      spring.servlet.multipart.maxFileSize = 10MB
    3.  
      # maxRequestSize 是总数据大小
    4.  
      spring.servlet.multipart.maxRequestSize=100MB

    有两点要注意:

    (1)这里“10MB”不能写成“10Mb”,否则会报另一个错,如下:

    (2)SpringBoot的版本不同,这两个配置语句也不一样,具体版本对应如下:

    • Spring Boot 1.3 版本:

         multipart.maxFileSize

    • Spring Boot 1.4 版本和 1.5 版本:

         spring.http.multipart.maxFileSize

    • Spring Boot 2.0 版本:

         spring.servlet.multipart.maxFileSize

    2、在启动类上加上@CONFIGURATION注解,且在类中添加一下代码:

    1.  
      @Bean
    2.  
      public MultipartConfigElement multipartConfigElement() {
    3.  
      MultipartConfigFactory factory = new MultipartConfigFactory();
    4.  
      // 单个数据大小
    5.  
      factory.setMaxFileSize("102400KB"); // KB,MB
    6.  
      // 总上传数据大小
    7.  
      factory.setMaxRequestSize("1024000KB");
    8.  
      return factory.createMultipartConfig();
    9.  
      }

    3、如有网关,在网关中也加入如上配置

  • 相关阅读:
    Linux文本处理命令
    管道和重定向
    Linux网络基本配置
    网络基础
    普通权限和特殊权限
    Linux权限
    Linux用户
    Linux帮助文档
    创建新表,自动授权trigger
    禁用约束语法测试
  • 原文地址:https://www.cnblogs.com/linus-tan/p/14137089.html
Copyright © 2020-2023  润新知