播放FrameWork / scala - 从数组返回流式响应[Byte]

时间:2017-04-19 00:11:56

标签: scala playframework-2.5

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

上的文档

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

但是当我实现它时,它表示chunked已被弃用,我应该使用chunked与Akka流源代替。目前我有

Ok.chunked(Source.fromBytes(file))

其中file是Array [Byte],但错误是:

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

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

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

并且相应的错误是:

expected: Source[ByteString, _] actual: Source

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

1 个答案:

答案 0 :(得分:0)

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

如果您的数据足够小,可以使用Ok.sendEntity。但是如果它很大,那么你应该将它存储在你的硬盘上,通过小的和平(块)将它们发送给Ok.chunked的用户。