【发布时间】:2018-09-04 21:36:24
【问题描述】:
我知道这里已经有人问过这个问题,但我还没有找到任何可行的解决方案。一直收到此警告:在收到请求结束之前发送 2xx“早期”响应。
这是我的代码:
pathPrefix("upload") {
(post & extractRequest) { _ => {
extractRequestContext {
requestCtx => {
println(requestCtx.request.toString)
implicit val materializer = requestCtx.materializer
implicit val executionContext = requestCtx.executionContext
fileUpload("file") {
case (metadata, byteSource) => {
val completesOnceUploadCompleted: Future[Done] =
byteSource.runWith(FileIO.toPath(Paths.get(metadata.fileName))).map(
iores => iores.status.get
)
val futureResponseBody = completesOnceUploadCompleted.map(res => res)
complete(futureResponseBody)
}
}
}
}
}
}
}
请帮我修一下。
【问题讨论】:
-
您的代码似乎工作正常(akka-actor/stream 2.4.20,akka-http 10.0.11)。
-
它适用于 ~50kb 的小文件,当我上传 ~1MB 文件时,它会生成上述警告,我尝试了旧版本的 akka,然后升级到最新版本,没有任何变化。
-
HTTP 是否允许提前响应(例如,在请求被消费之前)?
标签: scala file-upload akka-stream akka-http