【问题标题】:Max limit of MultipartFile in Spring BootSpring Boot 中 MultipartFile 的最大限制
【发布时间】:2016-03-14 16:06:00
【问题描述】:

MultipartFile 上传过程中,Spring Boot 可以处理的最大文件大小是否存在。我知道我可以在属性中设置maxFileSize,例如multipart.maxFileSize=1Mb

所以,我可以像这样允许上传一个大文件,比如 50MB。该应用程序运行在与 Spring Boot 集成的 Tomcat 服务器上。我还需要配置tomcat服务器吗?还是文件大小无限

【问题讨论】:

  • 据我所知,最好设置 maxFileSize 和 maxRequestSize...无论如何都是个好问题!
  • 我想知道它可以处理的最大文件大小。
  • 无限对于这样的东西从来都不是一件好事。最好将其设置为一个大数字 - 比您预期的要大。有人上传了比这更大的文件,这很可能是一次攻击,你会感谢 IllegalStateException 拯救了你的网站。

标签: java spring spring-boot tomcat file-upload


【解决方案1】:

设置multipart.max-file-size=128MBmultipart.max-request-size=128MB 对我有效,无需额外配置。

【讨论】:

    【解决方案2】:

    上传文件大小不受限制

    似乎设置-1 将使其文件大小无限。

    在 Spring Boot 2.0 之前:

    spring.http.multipart.max-file-size=-1
    spring.http.multipart.max-request-size=-1
    

    Spring Boot 2.0 之后:

    spring.servlet.multipart.max-file-size=-1
    spring.servlet.multipart.max-request-size=-1
    

    【讨论】:

    • 更具体:spring.http.multipart.max-file-size=128KBspring.http.multipart.max-request-size=128KB
    • 我测试了这个解决方案,它对我有用。 400GB 文件上传!我不需要配置其他任何东西,因为我使用的是码头。 spring.http.multipart.max-file-size=-1 spring.http.multipart.max-request-size=-1 @jimmbraddock 建议的
    • 在测试中,我们永远不知道用户会输入多大的文件,这个答案正是我想要的!
    【解决方案3】:

    对于那些使用 Spring Boot 2.0(从 M1 版本开始)的用户,属性名称已更改为:

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

    注意前缀是spring.servlet,而不是spring.http

    【讨论】:

    • 试图寻找这两者之间的差异,但没有运气。你能分享一些参考吗?
    • 如果您的请求有多个文件,那么 max-request-size 将是所有文件组合的大小限制。
    • 确保不要留出 10 MB 等空间。正确:应该是 10MB
    【解决方案4】:

    在我的application.yml 文件中

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

    如果你有application.properties 文件

    spring.servlet.multipart.max-file-size = 15MB
    spring.servlet.multipart.max-request-size = 15MB
    

    甚至你可以将文件大小设置为无限

    spring.servlet.multipart.max-file-size =-1
    spring.servlet.multipart.max-request-size =-1
    

    【讨论】:

    • 注意:对于 .yml 文件,您的文件大小仍然需要大写。 15MB 而不是 15Mb。
    【解决方案5】:

    Spring Boot 已经嵌入了 Tomcat,所以我们不需要配置它。 application-properties 中的 MULTIPART 属性会处理它。

    对于外部服务器,默认限制为50MB。我们打开webapps/manager/WEB-INF/web.xml就可以看到了

    <multipart-config>
       <max-file-size>52428800</max-file-size>
       <max-request-size>52428800</max-request-size>
       <file-size-threshold>0</file-size-threshold>
    </multipart-config>
    

    MULTIPART 属性已根据版本进行更改。

    Spring Boot 1.3.x 及更早版本

    multipart.max-file-size
    multipart.max-request-size
    

    Spring Boot 1.3.x 之后:

    spring.http.multipart.max-file-size=-1
    spring.http.multipart.max-request-size=-1
    

    Spring Boot 2.0 之后:

    spring.servlet.multipart.max-file-size=-1
    spring.servlet.multipart.max-request-size=-1 
    

    【讨论】:

      【解决方案6】:

      我仍在寻找答案,我们可以在 springboot 应用程序中使用 multiPartFile 上传的最大大小是多少,但我已成功使用 450mb,大约需要 10 分钟。以下是我在 application.properties 文件中所做的唯一配置以使其工作:

      spring.servlet.multipart.max-file-size=500MB
      spring.servlet.multipart.max-request-size=500MB
      

      【讨论】:

        猜你喜欢
        • 2017-11-27
        • 1970-01-01
        • 1970-01-01
        • 2016-12-24
        • 2021-05-29
        • 2017-09-17
        • 2021-12-18
        • 2019-04-10
        • 2016-12-12
        相关资源
        最近更新 更多