我想为boot提供的tomcat设置maxSwallowSize属性。 我的application.properties有这一行:
server.context-parameters.maxSwallowSize=20971520
由于某种原因不起作用。 server.port等其他属性运行良好。 在TomcatEmbeddedServletContainerFactory中调试创建我看到有一个带有此属性的ServletContexInitializer(InitParameterConfiguringServletContextInitializer),但它似乎没有以任何方式使用。 (即使它是变量名initializersToUse,具有讽刺意味; p)
当上传超过
设置的最大尺寸时,我不喜欢连接终止multipart.max-request-size=10MB
multipart.max-file-size=2MB
这是设置此属性的正确方法吗?在调试过程中,我可以看到IdentityInputFilter的默认值为2MB。
最新版本的org.springframework.boot:spring-boot-starter-web
答案 0 :(得分:10)
server.context-parameters
(因为defined in the documentation可用于指定servlet上下文的init参数)。 maxSwallowSize
是连接器的属性。我想这是另一回事。
我们没有明确的属性,但您始终可以通过自己的TomcatEmbeddedServletContainerFactory
进行配置。
@Bean
public TomcatEmbeddedServletContainerFactory containerFactory() {
return new TomcatEmbeddedServletContainerFactory() {
protected void customizeConnector(Connector connector) {
super.customizeConnector(connector);
if ((connector.getProtocolHandler() instanceof AbstractHttp11Protocol) {
(AbstractHttp11Protocol <?>) connector.getProtocolHandler()).setMaxSwallowSize(value);
}
}
};
}
答案 1 :(得分:1)
上面的配置对我没有帮助(我正在使用Spring Boot 1.5.10)
我发现解决方案是设置
<强> application.properties:强>
spring.http.multipart.max-file-size=10MB
spring.http.multipart.max-request-size=10MB
并且所有上传都可以正常运行而无需配置Tomcat。
答案 2 :(得分:0)
配置 spring.http.multipart.max-request-size 与 maxSwallowSize 不同。前者配置应用程序,而后者配置Tomcat服务器。
因此,在 spring.http.multipart 配置的添加中,您还应该提供 maxSwallowSize 的配置,只需为Spring Boot完成即可2通过设置应用程序属性:
server.tomcat.max-swallow-size=100MB