Play Framework - 仅从Ok.sendFile(文件)获取文件内容

时间:2015-05-14 13:34:05

标签: scala playframework

我的用户需要在我的Play应用程序中点击某个控制器时下载文件。我认为这样可以解决问题:

def downloadFile = Action {
  Ok.sendFile(new File("example.zip"))
}

但似乎只提供文件的实际内容而不是下载文件。有谁能告诉我我做错了什么?

由于

2 个答案:

答案 0 :(得分:0)

请改为尝试:

def index = Action {
  Ok.sendFile(
    content = new java.io.File("/tmp/fileToServe.pdf"),
    fileName = _ => "termsOfService.pdf"
  )
}

来自文档本身。

  

现在您不必指定文件名,因为Web浏览器会   不要尝试下载它,但只会显示文件内容   网页浏览器窗口。这对支持的内容类型很有用   本地由Web浏览器,如文本,HTML或图像。

请参阅:https://www.playframework.com/documentation/2.0/ScalaStream

答案 1 :(得分:0)

原来我们使用的REST客户端会自动将文件直接转换为其内容,而不是让我们下载文件。从普通浏览器中访问它可以按预期工作。