【问题标题】:Spring multipart file upload with gridfs size limit exception带有gridfs大小限制异常的Spring多部分文件上传
【发布时间】:2018-03-30 01:50:36
【问题描述】:

将 Jhipster 与 Spring+Mongo 和 Gridfs 一起使用来处理保存在 db 中的文件。当我尝试上传大于 1Mb 的文件时,出现 500 错误:

java.io.IOException: UT000054: The maximum size 1048576 for an individual file in a multipart request was exceeded

试图在 application-dev.yml 中设置它但没有成功:

spring:
    http:
        multipart:
            max-file-size: 10MB
            max-request-size: 10MB

如何更改此限制?

【问题讨论】:

  • 你用的是哪个版本的spring-boot?
  • @araknoid 1.5.2

标签: java spring mongodb jhipster gridfs


【解决方案1】:

您可以在application.properties 文件中配置这两个属性,而不是在您的application-dev.yml 中配置它:

spring.http.multipart.max-file-size=10MB
spring.http.multipart.max-request-size=10MB

如需了解更多信息,您可以向Spring Uploading file 指南发送支票。

附带说明,如果您稍后决定迁移到 spring-boot 2.0,这些属性已从 spring.http.multipart 更改为 spring.servlet.multipart

【讨论】:

  • 我没有application.properties,而是application.yml。在那里试过,没有效果。据我所知application-dev.yml 应该覆盖application.yml 设置。反正我两个都有,还是不行。
  • 您确定 spring boot 正确选择了您的 application-dev.yml 文件吗?还有其他的 yml 文件吗?
  • 是的,使用 application-dev.yml 进行其他一些设置也没有问题
  • spring.http.multipart 已被删除,我们必须使用 spring.servlet.multipart ,就像在 docs.spring.io/spring-boot/docs/2.0.0.M6/reference/htmlsingle/… 中一样。
  • @Xdg 你是对的,谢谢你的提醒。这个问题是针对 SpringBoot 1.5.2 提出的。对于之前的评论,我在最后添加了一条关于 Spring Boot 2.0 更改的注释。
【解决方案2】:

由于 JHipster 使用 undertow,解决此问题的一种方法是在多部分解析器 bean 中设置上传大小,如下所示:

@Configuration
public class UndertowConfiguration {

    @Value("${spring.http.multipart.max-file-size:10}")
    private long maxFileSize;

    @Bean(name = "multipartResolver")
    public MultipartResolver multipartResolver() {
        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
        multipartResolver.setDefaultEncoding("utf-8");
        multipartResolver.setResolveLazily(true);
        multipartResolver.setMaxUploadSize(1024*1024*maxFileSize);
        multipartResolver.setMaxUploadSizePerFile(1024*1024*maxFileSize);
        return multipartResolver;
    }
}

【讨论】:

    【解决方案3】:

    试试这个,

    spring:
        servlet:
            multipart:
                max-file-size: 10MB
                max-request-size: 10MB
    

    【讨论】:

      【解决方案4】:

      将此内容添加到 WebConfigurer(如果存在)

      @Bean
      
      public MultipartConfigElement multipartConfigElement() {
      
           MultipartConfigFactory factory = new MultipartConfigFactory();
      
           factory.setMaxFileSize("100MB");
      
           factory.setMaxRequestSize("100MB");
      
           return factory.createMultipartConfig();
      
      }
      

      【讨论】:

        【解决方案5】:

        对于spring boot2.x:

        spring:
            servlet:
                multipart:
                    max-file-size: 10MB
                    max-request-size: 10MB
        

        对于旧版本

        spring:
            http:
                multipart:
                    max-file-size: 10MB
                    max-request-size: 10MB
        

        对于无限上传文件大小,设置设置 max-file-size: -1 将使其无限文件大小。

        【讨论】:

          猜你喜欢
          • 2019-07-24
          • 1970-01-01
          • 2017-03-09
          • 1970-01-01
          • 2018-12-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-11-10
          相关资源
          最近更新 更多