【问题标题】:Play FrameWork / scala - return a streamed response from an Array[Byte]Play FrameWork / scala - 从 Array[Byte] 返回流式响应
【发布时间】:2017-04-19 00:11:56
【问题描述】:

我是 Play 新手,正在尝试将 Array[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] 转换为适当的格式以在响应中流式传输,以及选择 chunked 与 sendEntity 方法有什么好处。谢谢!

【问题讨论】:

    标签: scala playframework-2.5


    【解决方案1】:
    val file: Array[Byte] = ???
    Ok.sendEntity(HttpEntity.Strict(ByteString(file), None))
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-24
      • 1970-01-01
      • 1970-01-01
      • 2018-03-24
      • 1970-01-01
      • 2023-01-21
      • 2017-01-15
      相关资源
      最近更新 更多