У меня есть Spring Boot 2, реактивный веб-сервис webflux, который сохраняет загруженные составные части файла в GridFS MongoDB. Это работает правильно. Сегодня был сделан запрос на включение метаданных для файлов, добавляемых в GridFS. К сожалению, я не смог заставить его работать с моим функциональным / неаннотированным веб-сервисом. Буду признателен за любые предложения или подталкивания в правильном направлении. Вот подробности:
Пример запроса, отправляемого на мою конечную точку:
curl -X "POST" "http://localhost:8080/api/maps" \
-H 'Content-Type: multipart/form-data; charset=utf-8; boundary=__X_BOUNDARY__'"'"'' \
-F "files=@animage.jpg" \
-F "metadata={\"tenantId\":\"598b53702f52f9\",\"projectId\":\"59c0a78d6212dc\"}
Вот мой текущий сервис, который работает без метаданных в запросе выше:
override fun upload(fluxFileParts: Flux<FilePart>): Flux<Map<String, String>> =
fluxFileParts
.flatMap { filePart ->
reactiveGridFsTemplate.store(
filePart.content(),
filePart.filename(),
kMediaTypeMap.getValue(filePart.filename().getFileExtension())
)
.map { objectId ->
mapOf("objectId" to objectId.toHexString())
}
}
По сути, я пытаюсь реализовать что-то вроде следующего. Если бы я использовал аннотации, @RequestPart предоставил бы строго типизированный объект.
override fun uploadWithProjectMetadata(
fluxFileParts: Flux<FilePart>,
metadata: SliderUploadMetadata
//@RequestPart("files") fluxFileParts: Flux<FilePart>,
//@RequestPart metadata: SliderUploadMetadata
): Flux<Map<String, String>>
Буду признателен за вашу помощь ... Я ходил по кругу в течение нескольких часов и не добился никакого прогресса ... Arggg ... разочарование! :)