簡體   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