#spring #spring-boot #spring-mvc #multipartform-data #spring-webflux
#spring #spring-boot #spring-mvc #multipartform-data #spring-webflux
Вопрос:
Я пытаюсь вернуть Mono в API, который используется для загрузки файла.
Это сигнатура метода.
@PatchMapping(value = {"/uploadDoc},
consumes = {MediaType.MULTIPART_FORM_DATA_VALUE}
produces = {MediaType.APPLICATION_STREAM_JSON_VALUE,
MediaType.APPLICATION_JSON_VALUE})
Mono<MyObject> uploadDocument(@PathVariable("id") String id, @RequestPart("file") FilePart filePart);
Когда я возвращаю Mono<Void>
или Mono<String>
, он работает нормально. Но, когда я возвращаю поток моего пользовательского объекта Mono<MyObject>
, я получаю приведенную ниже ошибку.
org.springframework.http.converter.HttpMessageNotWritableException: No Encoder for [com.MyObject] with preset Content-Type 'multipart/form-data;boundary=--------------------------127221087502764453476151'
at org.springframework.web.reactive.result.method.annotation.AbstractMessageWriterResultHandler.writeBody(AbstractMessageWriterResultHandler.java:172)
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
Остальной части трассировки стека.
Stack trace:
at org.springframework.web.reactive.result.method.annotation.AbstractMessageWriterResultHandler.writeBody(AbstractMessageWriterResultHandler.java:172)
at org.springframework.web.reactive.result.method.annotation.AbstractMessageWriterResultHandler.writeBody(AbstractMessageWriterResultHandler.java:107)
at org.springframework.web.reactive.result.method.annotation.ResponseBodyResultHandler.handleResult(ResponseBodyResultHandler.java:86)
at org.springframework.web.reactive.DispatcherHandler.handleResult(DispatcherHandler.java:169)
at org.springframework.web.reactive.DispatcherHandler.lambda$handle$2(DispatcherHandler.java:147)
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:118)
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1637)
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onNext(MonoFlatMap.java:241)
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:73)
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:203)
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:203)
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1637)
at reactor.core.publisher.MonoIgnoreThen$ThenAcceptInner.onNext(MonoIgnoreThen.java:296)
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1637)
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:144)
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1637)
Я что-то здесь упускаю? Почему я не могу вернуть объект при загрузке файловой части?
Комментарии:
1. Любые предложения о том, как решить эту проблему
2. Я не смог найти обходной путь, так что нет.