DataBufferLimitException:Exceeded limit on max bytes to buffer

WebFlux 上传文件异常

错误信息提示

DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144

网上随便一搜

1
2
3
spring:
codec:
max-in-memory-size: 20MB

重启项目

报错依旧…

换个解决方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

@Configuration
public class WebfluxConfig implements WebFluxConfigurer{

@Bean
public WebClient getWebClientBuilder(){
return WebClient.builder().exchangeStrategies(ExchangeStrategies.builder()
.codecs(configurer -> configurer
.defaultCodecs()
.maxInMemorySize(20 * 1024 * 1024))
.build())
.build();
}

@Override
public void configureHttpMessageCodecs(ServerCodecConfigurer configurer) {
configurer.defaultCodecs().maxInMemorySize(20 * 1024 * 1024);
}

}

重启

又报错…

懵逼

仔细研究了一下

发现不是默认的Filter出错而是自己的自定义 Filter出错了

1
2
3
4
5
6
7
8
//出错的位置
ServerRequest serverRequest = new DefaultServerRequest(exchange);

//修改为
ServerRequest serverRequest = ServerRequest.create(exchange, codecConfigurer.getReaders());
//codecConfigurer 用spring注入的
@Autowired
ServerCodecConfigurer codecConfigurer;

简单讲就是 我自己写的 RequestBodyFilter 用的 Codecs 不是 Spring 注入的

所以之前设置的都没有生效

以前没问题是因为 这个filter 我写了 上传文件的白名单 这次接口刚添加 忘记加白名单了