Spring Webflux limit uploadowanego pliku

0

Cześć,

uploaduję sobie plik takim kodem:

@Configuration
public class ApplicationRoute {

    private static final Logger log = LoggerFactory.getLogger(ApplicationRoute.class);

    @Bean
    RouterFunction<ServerResponse> appRoutes() {
        return nest(path("/api"),
                route(POST("/fileupload"), fileUpload()));
    }

    private HandlerFunction<ServerResponse> fileUpload() {
        return request -> {
//            print content length
            System.out.println(request.headers().contentLength().getAsLong());
            
            return request.body(BodyExtractors.toMultipartData()).flatMap(parts -> {
                        Map<String, Part> map = parts.toSingleValueMap();
                        final FilePart filePart = (FilePart) map.get("file");
                        final String dir = "C:\\JDeveloper\\mywork\\Spring\\SpringTest\\webflux-file-upload\\uploaded";
                        filePart.transferTo(new File(dir + "/" + filePart.filename()));

                        return ServerResponse.ok().body(fromObject("ok, file uploaded"));
                    }
            );
        };
    }
}

i potrzebuję nałożyć limit na wielkość uploadowanego pliku, oczywiście zanim go pobiorę. Jak to zrobić?

Jedyne co udało mi się wykminić to sprawdzanie headera Content-Length, ale to nie jest bezpieczne rozwiązanie. Miał ktoś już taki problem?

0

A co masz przed api? jakiś apache/nginx? My takie rzeczy ubiliśmy globalnie na poziomie nginxa w confie client_max_body_size 10M. Może wolałbyś to zrobić w ten sposób? I na proxy go "tempować"

0

Szczerze mówiąc nie mam pojęcie jeszcze w jakim środowisku będzie deployowana aplikacja. Jeśli będę mógł filtrować jakoś wcześniej requesty to możliwe że tak zrobię. Póki co szukam rozwiązania w javie/webfluxie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1