代码之家  ›  专栏  ›  技术社区  ›  mmdc

如何从gridfs读取文件到数组字节?

  •  0
  • mmdc  · 技术社区  · 8 年前

    我想从Enumerator[Array[Byte]]获取Array/List[Byte]。一些文章向我展示了如何在playframework中实现它。但我并没有在这个项目中使用游戏框架。这就是我所拥有的:

          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)
            }
          }
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   cchantep    8 年前

    您可以使用 Iteratee.consume .

    val sink: Iteratee[Array[Byte], Array[Byte]] = Iteratee.consume[Array[Byte]]()
    val allInMem: Future[Array[Byte]] = enumerator |>>> sink
    

    出于显而易见的原因,建议不要消耗大数据,而是使用适当的 Iteratee 以流方式处理数据。