Сервер получает многочастную форму, которая содержит файл и объект JSON. Каков наилучший способ извлечь файл вместе с метаданными и дополнительным объектом JSON из запроса?
Прямо сейчас у меня есть следующий код:
pathPrefix(""){
post {
extractRequestContext {
requestCtx => {
implicit val materializer = requestCtx.materializer
implicit val executionContext = requestCtx.executionContext
fileUpload("file") {
case (metadata, byteSource) => {
byteSource.runWith(FileIO.toPath(Paths.get(metadata.fileName))).onComplete {
case Success(posts) => {
formFields('campaign){
campaign => {
println(campaign)
complete(ApiResponse("OK"))
}
}}}
complete(ApiResponse("OK"))
}
}
}
}
}
}
Проблема в том, что АККА отправляет ответ до того, как запрос будет прочитан полностью. И я не уверен, как завершить маршрут отсюда:
byteSource.runWith(FileIO.toPath(Paths.get(metadata.fileName))) ...
Это выражение производит IOResult, как я могу преобразовать его в сервер. Маршрут?