【发布时间】:2017-06-27 23:04:19
【问题描述】:
我正在尝试实现一个转发帖子请求的代理。 (播放 2.5.15 框架和 Scala 2.11.11)请求是一个多部分调用,它可以包含一个巨大的文件,我不能将它作为临时文件存储在内存中或磁盘上。我在文档 (https://www.playframework.com/documentation/2.5.x/ScalaBodyParsers#directing-the-body-elsewhere) 中发现了一段代码,这可能会起到作用。
import javax.inject._
import play.api.mvc._
import play.api.libs.streams._
import play.api.libs.ws._
import scala.concurrent.ExecutionContext
import akka.util.ByteString
class MyController @Inject() (ws: WSClient)(implicit ec: ExecutionContext) {
def forward(request: WSRequest): BodyParser[WSResponse] = BodyParser { req =>
Accumulator.source[ByteString].mapFuture { source =>
request
// TODO: stream body when support is implemented
// .withBody(source)
.execute()
.map(Right.apply)
}
}
def myAction = Action(forward(ws.url("https://example.com"))) { req =>
Ok("Uploaded")
}
}
不幸的是,流体支持尚不可用。有没有办法实现它?我在网上找不到合适的解决方案。我是一个绝对的 scala 并且是新秀,所以我很感谢每一个提示。
【问题讨论】:
标签: scala playframework