Мне нужно передать оба файла (через form-data
) и DTO. Поэтому я пытаюсь сделать следующее:
@PostMapping
public Mono<Void> method(@RequestPart("files") Flux<FilePart> files,
Dto dto) {
return Mono.empty();
}
и инициализировать Dto
через параметры для каждого поля dto
.
Итак, я получаю следующую ошибку:
org.springframework.core.codec.CodecException: Type definition error: [simple type, class org.springframework.http.codec.multipart.SynchronossPartHttpMessageReader$SynchronossFilePart]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.springframework.http.codec.multipart.SynchronossPartHttpMessageReader$SynchronossFilePart and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.LinkedHashMap["errors"]->java.util.Collections$UnmodifiableList[0]->org.springframework.validation.FieldError["rejectedValue"])
Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.springframework.http.codec.multipart.SynchronossPartHttpMessageReader$SynchronossFilePart and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.LinkedHashMap["errors"]->java.util.Collections$UnmodifiableList[0]->org.springframework.validation.FieldError["rejectedValue"])
Изображения загружаются правильно, если я полностью удаляю параметр Dto
.
Добавление аннотации @RequestBody
к параметру Dto
приводит к следующей ошибке:
Content type 'multipart/form-data;charset=UTF-8;boundary=rh4lsv9DycBf8hpV2snhKfRjSrj1GvHzVy' not supported for bodyType=com.example.Dto
Получено это работает путем передачи Dto
как @RequestParam("dto") String dto
и синтаксического анализа JSON вручную, но на самом деле это не идеальное решение.