2015-04-02 65 views
2

我有一串數據,從數據庫中的數據中獲得。我想將它發送給用戶,但不創建本地副本的文件,像Scala Playframework發送文件

Ok(MyString).as("file/csv") 

但它不工作。我該怎麼做?

回答

3

您可以使用chunkedEnumerator來完成此操作。我還使用withHeaders指定Result的內容類型和處置爲「附件」,以便客戶端將其解釋爲要下載的文件(而不是在瀏覽器本身中打開)。

import play.api.libs.iteratee.Enumerator 

val myString: String = ??? // the String you want to send as a file 

Ok.chunked(Enumerator(myString.getBytes("UTF-8")).andThen(Enumerator.eof)) 
    .withHeaders(
    "Content-Type" -> "text/csv", 
    "Content-Disposition" -> "attachment; filename=mystring.csv" 
) 

這可能無法立即編譯,具體取決於您從數據庫中獲取的類型。

細想起來,這也應該工作(不Enumerator):

Ok(myString).withHeaders(/* headers from above */) 
+0

是的,這是完美的 – Ophelia 2015-04-02 19:29:48