Reputation: 3124
I'm using flux of FileParts to upload files @RequestPart(FILES) Flux<FilePart> files
And trying to limit maximum size of files. Looks like old way does not work:
spring.servlet.multipart.max-file-size=1MB
spring.servlet.multipart.max-request-size=1MB
And I dont have any methods to get file size in FilePart
interface. So is ther any way to limit max size of uploaded file in webflux, whithout copying it? I know that there are headers like Content-Length
, but it does not look secure way.
Upvotes: 10
Views: 7046
Reputation: 301
The Web on Reactive Stack documentation states the following:
For file parts written to disk, there is an additional maxDiskUsagePerPart property to limit the amount of disk space per part. There is also a maxParts property to limit the overall number of parts in a multipart request. To configure all 3 in WebFlux, you’ll need to supply a pre-configured instance of MultipartHttpMessageReader to ServerCodecConfigurer.
I was able to apply it via this configuration class:
@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);
}
}
Upvotes: 7