繁体   English   中英

使用 playframework 和 scala 创建并流式传输 zip 文件

[英]Create and stream a zip file as it is beeing created with the playframework and scala

我的 scala-play api 提供端点以通过Ok.chunked函数将文件作为流返回。

我现在希望能够允许将多个文件作为 zip 存档下载。

我想创建一个 zip 文件作为流,播放应该直接作为文件流返回。 这意味着无需将 zip 文件临时保存在光盘上并在创建时提供它。

实现创建此流的函数的好方法是什么?

我使用 akkas alpakka 解决了这个问题。

import akka.stream.alpakka.file.ArchiveMetadata
import akka.stream.alpakka.file.scaladsl.Archive
import akka.stream.scaladsl.Source
import akka.util.ByteString

val fileSource: Source[ByteString, _]  = FileIO.fromPath(path)
val tupelWithMetaData = (ArchiveMetadata(s"file.txt"), fileSource)

val stream: Source[ByteString, _] = Source(List(tupelWithMetaData)).via(Archive.zip())

首先,我创建了一个 akka ByteString源。 源在Tupel2内部使用, Tupel2带有一些ArchiveMetadata 这个元组可以用来创建一个可以连接到 alpakkas Archive.zip()的新源。

结果流可以用于播放Ok.chunked

如果您有同样的问题,我希望这个解决方案可以帮助您。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM