我想从Enumerator [Array [Byte]]获取Array / List [Byte]。一些文章告诉我如何在playframework中做到这一点。但是我没有在这个项目中使用play框架。这就是我所拥有的:
lazy val gridfs = GridFS[BSONSerializationPack.type](db, "resource")
gridfs.find(BSONDocument("_id" -> BSONObjectID(id))).headOption.map{
case Some(file) => {
//this gives me Enumerator[Array[Byte]].
//I'm not using playframework, how to get Future[Array[Byte]] from here?
gridfs.enumerate(file)
}
}
答案 0 :(得分:1)
使用Play Iteratees并非特定于Play应用程序,而是流式传输,如Akka Stream或RxStuff。
您可以使用Iteratee.consume
消耗此类枚举器的所有块。
val sink: Iteratee[Array[Byte], Array[Byte]] = Iteratee.consume[Array[Byte]]()
val allInMem: Future[Array[Byte]] = enumerator |>>> sink
出于显而易见的原因,它建议不要使用大数据,而是使用适当的
Iteratee
以流方式处理数据。