我必須隨時生成大文件。讀取數據庫並將其發送給客戶端。 我讀了一些文件和我這樣做如何隨時生成大數據流
val streamContent: Enumerator[Array[Byte]] = Enumerator.outputStream {
os =>
// new PrintWriter() read from database and for each record
// do some logic and write
// to outputstream
}
Ok.stream(streamContent.andThen(Enumerator.eof)).withHeaders(
CONTENT_DISPOSITION -> s"attachment; filename=someName.csv"
)
林相當新的階一般只有一個星期,所以不要引導我的名譽。
我的問題是:
1)這是最好的方法嗎?我發現這個如果我有一個大文件,這個會加載到內存中,也不知道這種情況下chunk的大小是什麼,如果它發送給每個write()
都不方便。
2)我發現這個方法Enumerator.fromStream(data : InputStream, chunkedSize : int)
稍好一點,因爲它有一個塊大小,但我沒有inputStream導致即時創建文件。
塊大小爲默認設置爲'1024 * 8'。我認爲這個大小取決於你的選擇,無論你想發送更大還是更小的塊。 – goral
@goral你怎麼知道'Enumerator.outputStream'塊由'1024 * 8'? – nachokk
我不知道outputStream,你說的'fromStream'方法和規格設置爲默認值 – goral