【问题标题】:Return binary stream as response to request playframework返回二进制流作为对请求播放框架的响应
【发布时间】:2011-02-06 07:03:37
【问题描述】:

我在从播放框架返回二进制流时遇到问题。根据文档,如果框架发现控制器方法返回 Stream 或 File,它应该自动返回二进制输出。那么我的方法返回一个 Stream[Byte] 但框架返回“Stream(100, ?)”而不是二进制流。

我做错了什么? 感谢您的回答, 托马斯·赫尔曼


编辑

好的,以防将来有人需要这个,看起来我以某种方式将它破解在一起。我只是从 Stream 构建一个字符串并返回它。它似乎工作正常,但我确信有更好的解决方案。

示例:

val builder = new StringBuilder()
builder.clear
stream foreach { x=> builder.append(x.toChar)}
val res = builder.toString

其中 res 是您的控制器方法应该返回的内容

【问题讨论】:

    标签: scala playframework


    【解决方案1】:

    你可能已经得到了你需要的东西。 Stream(100, ?) 是一个Stream,其第一个值为100,其余值尚未计算。要完整查看,请尝试打印stream mkString ("Stream(", ", ", ")")

    【讨论】:

    • 是的,但我实际上需要 Play 框架将流的内容发送到 Web 浏览器(或者在我的情况下是 BitTorrent 客户端)。目前,我认为,它只发送对象的 toString 值
    • @Arg 如果是这种情况,要么不要使用Stream,要么做一些无操作来强制它完全评估(例如,val noop = stream.mkString)。
    • 是的,使用我添加到 OP 的功能解决了它。我只是以某种方式期望 playframework 会接受一个 Stream 作为控制器方法的输出。对我来说似乎有些自然。无论如何感谢重播!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-27
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    相关资源
    最近更新 更多