如何动态流式处理由枚举器填充的zip格式的大文件?

时间:2019-05-23 11:40:39

标签: scala playframework inputstream zipoutputstream

我想即时流式传输包含图像和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;")

0 个答案:

没有答案