Spring WebFlux:设置用于上传文件的最大文件大小

时间:2019-08-09 06:41:02

标签: java spring file-upload upload spring-webflux

我正在使用FileParts的流量上传文件@RequestPart(FILES) Flux<FilePart> files

并尝试限制文件的最大大小。看来旧方法不起作用:

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

我没有任何方法可以在FilePart界面中获取文件大小。那么,有没有办法在不复制的情况下限制webflux中上传文件的最大大小?我知道有类似Content-Length的标头,但它看起来并不安全。

1 个答案:

答案 0 :(得分:0)

Web on Reactive Stack documentation指出以下内容:

  

对于写入磁盘的文件部件,还有一个额外的maxDiskUsagePerPart属性可限制每个部件的磁盘空间量。还有一个maxParts属性,用于限制多部分请求中的部分总数。要在WebFlux中配置所有3个,您需要向ServerCodecConfigurer提供一个预先配置的MultipartHttpMessageReader实例。

我能够通过以下配置类来应用它:

@Configuration
@EnableWebFlux
public class WebConfig implements WebFluxConfigurer {

    @Override
    public void configureHttpMessageCodecs(ServerCodecConfigurer configurer) {
        SynchronossPartHttpMessageReader partReader = new SynchronossPartHttpMessageReader();
        partReader.setMaxParts(1);
        partReader.setMaxDiskUsagePerPart(10L * 1024L);
        partReader.setEnableLoggingRequestDetails(true);

        MultipartHttpMessageReader multipartReader = new MultipartHttpMessageReader(partReader);
        multipartReader.setEnableLoggingRequestDetails(true);

        configurer.defaultCodecs().multipartReader(multipartReader);
    }

}