在 Spring Boot 中增加 HTTP Post maxPostSize

新手上路,请多包涵

我有一个相当简单的 Spring Boot Web 应用程序,我有一个带有 enctype="multipart/form-data" 的表单的 HTML 页面。我收到此错误:

多部分请求包含超出关联连接器上设置的 maxPostSize 限制的参数数据(不包括上传的文件)。

我正在使用 Spring Boot 的默认嵌入式 tomcat 服务器。显然默认 maxPostSize 值是 2 兆字节。有没有办法编辑这个值?通过 application.properties 这样做是最好的,而不必创建自定义 bean 或弄乱 xml 文件。

原文由 Jordan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
2 个回答

找到了解决方案。将此代码添加到运行 SpringApplication.run 的同一类中。

 // Set maxPostSize of embedded tomcat server to 10 megabytes (default is 2 MB, not large enough to support file uploads > 1.5 MB)
@Bean
EmbeddedServletContainerCustomizer containerCustomizer() throws Exception {
    return (ConfigurableEmbeddedServletContainer container) -> {
        if (container instanceof TomcatEmbeddedServletContainerFactory) {
            TomcatEmbeddedServletContainerFactory tomcat = (TomcatEmbeddedServletContainerFactory) container;
            tomcat.addConnectorCustomizers(
                (connector) -> {
                    connector.setMaxPostSize(10000000); // 10 MB
                }
            );
        }
    };
}

编辑:显然将其添加到您的 application.properties 文件中也会增加 maxPostSize,但我自己没有尝试过,所以无法确认。

 multipart.maxFileSize=10Mb # Max file size.
multipart.maxRequestSize=10Mb # Max request size.

原文由 Jordan 发布,翻译遵循 CC BY-SA 3.0 许可协议

application.properties 文件中这样写:

 # Max file size.
spring.http.multipart.max-file-size=1Mb
# Max request size.
spring.http.multipart.max-request-size=10Mb

根据您的需要调整尺寸。


更新

注意:Spring Boot 2 开始,您现在可以这样做

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

附录 A. 常见应用程序属性 - Spring

原文由 Sanjay Singh Rawat 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题