Требуемый параметр FileUpload[] ‘body’ отсутствует при загрузке загрузочного файла Spring с помощью json

#java #spring-boot #spring-webflux

#java #spring-boot #spring-webflux

Вопрос:

Я пытаюсь загрузить файл с помощью json в качестве параметра запроса. Но он говорит, что тело FileUpload отсутствует.

Вот мой контроллер.

 @PostMapping("/upload")
    public Flux<FileUpload> upload(@RequestPart("files") Flux<FilePart> filePartFlux,
                                    @RequestParam("body") FileUpload[] fileUploads) {
        return fileUploadService.saveFile(filePartFlux, fileUploads);
    }
  

Вот мой сервис.

 @Override
public Flux<FileUpload> saveFile(Flux<FilePart> filePartFlux, FileUpload[] fileUpload) {
    List<FileUpload> list = Arrays.asList(fileUpload);
    Flux<FileUpload> file = Flux.fromIterable(list);

    upload(filePartFlux);

    fileUploadRepository.saveAll(file);

    return null;
}
  

И в Postman я попробовал это, но ошибка.

введите описание изображения здесь

Ответ №1:

 @RequestParam("body")
  

В WebFlux индикатор @RequestParam привязывает только параметры запроса.
ref docs :
https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/web-reactive.html#webflux-ann-requestparam

Если вы хотите получить FormData, вам следует использовать ServerWebExchange