AKKA Http multipart форма извлечения данных и файла - PullRequest
0 голосов
/ 04 сентября 2018

Сервер получает многочастную форму, которая содержит файл и объект 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, как я могу преобразовать его в сервер. Маршрут?

...