我想即时流式传输包含图像和xml文件的zip文件,xml文件的内容来自Elem的枚举器,但是我找到了类似的示例: https://gist.github.com/kirked/412b5156f94419e71ce4a84ec1d54761。 但是我的问题是zip的内容不是来自文件,而是来自枚举器。那么如何使用Scala play框架直接从枚举器中流式传输呢? 这是我的代码:
val xmlContent: Enumerator[Elem] = ..
val streamContent: Enumerator[Array[Byte]] = Enumerator.outputStream { os =>
val zip = new ZipOutputStream(os)
zip.putNextEntry(new ZipEntry("report.xml"))
xmlContent.map{node=> zip.write(node.mkString.getBytes)}
zip.closeEntry()
zip.close()
}
Ok.chunked(streamContent >>> Enumerator.eof).as("application/zip").withHeaders(
CONTENT_DISPOSITION -> "attachment;")