2015-04-02 34 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

相关问题