【问题标题】:Scala Playframework send fileScala Playframework 发送文件
【发布时间】:2015-04-02 19:06:36
【问题描述】:

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

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

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

【问题讨论】:

    标签: scala playframework


    【解决方案1】:

    您可以将chunkedEnumerator 结合使用。我还使用withHeadersResult 的内容类型和处置指定为“附件”,以便客户端将其解释为要下载的文件(而不是在浏览器本身中打开)。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-26
      • 2018-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多