2
我有一串數據,從數據庫中的數據中獲得。我想將它發送給用戶,但不創建本地副本的文件,像Scala Playframework發送文件
Ok(MyString).as("file/csv")
但它不工作。我該怎麼做?
我有一串數據,從數據庫中的數據中獲得。我想將它發送給用戶,但不創建本地副本的文件,像Scala Playframework發送文件
Ok(MyString).as("file/csv")
但它不工作。我該怎麼做?
您可以使用chunked
和Enumerator
來完成此操作。我還使用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 */)
是的,這是完美的 – Ophelia 2015-04-02 19:29:48