播放 FrameWork / scala - return 来自 Array[Byte] 的流式响应

Play FrameWork / scala - return a streamed response from an Array[Byte]

我是 Play 的新手,正在尝试将数组 [Byte] 流式传输回用户。我一直在

阅读有关这方面的文档

https://www.playframework.com/documentation/2.5.x/ScalaStream

但是当我实现这个时,它说 chunked 已经被弃用,我应该使用 chunked 和 Akka 流源。目前我有

Ok.chunked(Source.fromBytes(file))

其中文件是 Array[Byte] 但错误是:

Expected: Source[NotInferredC, _], actual: Source

收到此错误后,我更深入地尝试获得不同的解决方案,然后尝试在我拥有的地方创建流式实体:

Ok.sendEntity(HttpEntity.Streamed(Source.fromBytes(file), None, None))

对应的错误是:

expected: Source[ByteString, _] actual: Source

我想知道如何将我的 Array[Byte] 转换为适当的格式以在响应中流式传输,另外,选择分块方法与 sendEntity 方法有什么好处。谢谢!

val file: Array[Byte] = ???
Ok.sendEntity(HttpEntity.Strict(ByteString(file), None))

如果您的数据对于您的 RAM 来说足够小,请使用 Ok.sendEntity。但是如果它很大,那么你应该把它存储在你的硬盘上,把它分成小块(块),然后用 Ok.chunked.

将它们发送给用户