Scala Playframework 发送文件

Scala Playframework send file

我有一串数据,是从我的数据库中的数据中得到的。我想将它发送给用户,但不创建文件的本地副本,例如

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

但它不起作用。我该怎么做?

您可以通过使用 chunkedEnumerator 来完成此操作。我还使用 withHeaders 指定 Result 到 "attachment" 的内容类型和配置,以便客户端将其解释为要下载的文件(而不是在浏览器中打开本身)。

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 */ )