Как разобрать chntked ​​Http Request с использованием Akka-HTTP и Akka-streams - PullRequest
0 голосов
/ 20 сентября 2019
curl -vk -H 'Transfer-Encoding: chunked' -H 'Content-Type: application/octet-stream' -H 'filename: some.png' -d @some.png -X PUT http://localhost:8080/someendpoint

Я хочу собрать данные, отправленные вышеупомянутым запросом, используя Akka-HTTP и Akka-streams.

Когда я использую директиву extractDataBytes, происходит сбой с java.lang.IllegalStateException: Substream Source cannot be materialized more than once.

(pathPrefix("someendpoint") & put) {
 withoutSizeLimit {
   (extractRequestContext & extractDataBytes) { (ctx,bytes) =>
     implicit val materializer: Materializer = ctx.materializer
     val collectBytes = bytes.runFold(ByteString.empty) { case (acc, i) => acc ++ i }
       .onComplete(collectBytes) { s => complete("Finished collecting data:" + s.toString) }
   }
}

Я хочу byteString из File, когда я делаю частичный запрос.

...