問題描述
我正在使用 FileParts 的 Flux 來上傳文件 @RequestPart(FILES) Flux<FilePart>文件
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
而且我沒有任何方法可以在 FilePart
界面中獲取文件大小.那么有什么方法可以限制 webflux 中上傳文件的最大大小,而不復制它?我知道有像 Content-Length
這樣的標頭,但它看起來并不安全.
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.
推薦答案
Web on Reactive Stack 文檔 聲明如下:
對于寫入磁盤的文件部分,有一個額外的 maxDiskUsagePerPart 屬性來限制每個部分的磁盤空間量.還有一個 maxParts 屬性來限制多部分請求中的部分總數.要在 WebFlux 中配置所有 3 個,您需要向 ServerCodecConfigurer 提供一個預配置的 MultipartHttpMessageReader 實例.
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);
}
}
這篇關于Spring WebFlux:設置上傳文件的最大文件大小的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!