scala - 使用 Play Framework 下载 csv 文件?

标签 scala file csv playframework playframework-2.0

我想向我的应用程序添加一个简单的按钮,单击该按钮将调用一个操作,该操作将从我拥有的两个列表创建一个 csv 文件并将其下载到用户计算机。

这是我的行动:

def createAndDownloadFile = Action {

    val file = new File("newFile.csv")

    val writer = CSVWriter.open(file)

    writer.writeAll(List(listOfHeaders, listOfValues))

    writer.close()

    Ok.sendFile(file, inline = false, _ => file.getName)
  }

但这现在对我有用,文件没有从浏览器下载......

我希望看到浏览器下载文件,我认为 Ok.sendFile 应该可以解决问题..

谢谢!

最佳答案

您可以使用Enumerators并为此而流。它应该像这样工作:

val enum   = Enumerator.fromFile(...)
val source = akka.stream.scaladsl.Source.fromPublisher(play.api.libs.streams.Streams.enumeratorToPublisher(enum))
Result(
  header = ResponseHeader(OK, Map(CONTENT_DISPOSITION → "attachment; filename=whatever.csv.gz")),
  body = HttpEntity.Streamed(source.via(Compression.gzip), None, None)
)

这实际上将通过 gzip 传输下载。如果不需要,只需删除 .via(Compression.gzip) 部分即可。

关于scala - 使用 Play Framework 下载 csv 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44308925/

相关文章:

scala - 电梯/Scala 上的 MVC

Java:将字符串解析为 double

java - 使用java获取csv数据并根据预期结果验证它

Python通过groupby进行求和运算,但排除非数字数据

scala - 为什么我的Scala future 无法传播错误?

python相当于scala分区

r - 如何将 R 目录中的文件名与 CSV 列中的名称匹配

java - Java 读/写文件中的编码不正确

java - 从 CSV raw 插入 SQLite 的更快方法?

scala - 测试 sbt 没有正确读取 java.library.path