Scala 返回二进制流作为对playframework请求的响应
我在从play框架返回二进制流时遇到问题。根据文档,如果发现控制器方法返回流或文件,框架应该自动返回二进制输出。我的方法返回一个流[字节],但是框架返回“Stream(100),”,而不是二进制流 我做错了什么? 谢谢你的回答, 托马斯·赫尔曼Scala 返回二进制流作为对playframework请求的响应,scala,playframework,Scala,Playframework,我在从play框架返回二进制流时遇到问题。根据文档,如果发现控制器方法返回流或文件,框架应该自动返回二进制输出。我的方法返回一个流[字节],但是框架返回“Stream(100),”,而不是二进制流 我做错了什么? 谢谢你的回答, 托马斯·赫尔曼 编辑 好吧,万一将来有人需要这个,看起来我不知怎么把它拼凑起来了。我只是从流中构建一个字符串并返回它。它似乎工作正常,但我相信有更好的解决办法 例如: val builder = new StringBuilder() builder.clear st
编辑 好吧,万一将来有人需要这个,看起来我不知怎么把它拼凑起来了。我只是从流中构建一个字符串并返回它。它似乎工作正常,但我相信有更好的解决办法 例如:
val builder = new StringBuilder()
builder.clear
stream foreach { x=> builder.append(x.toChar)}
val res = builder.toString
其中res是控制器方法应该返回的值您可能已经得到了所需的值<代码>流(100,?)是第一个值为
100
的流,其余值尚未计算。要全面查看,请尝试打印stream mkString(“stream”(“,”,“,”))
是,但实际上我需要Play framework将流的内容发送到web浏览器(或者在我的情况下是BitTorrent客户端)。目前,我认为,它只发送object@Arg如果是这种情况,要么不要使用流
,要么执行一些强制它进行完全计算的禁止操作(例如,val noop=Stream.mkString
).是的,使用我添加到OP中的函数解决了这个问题。我只是希望playframework会接受一个流作为控制器方法的输出。对我来说似乎有点自然。无论如何,谢谢你的重播!