我正在通过play.mvc.Results.ok(文件)从控制器返回一个文件。但是,文件下载为“下载”,没有特定的文件名。有没有办法设置下载名称(即image.png)?
由于
答案 0 :(得分:14)
为了定义特定的文件名,您必须在返回Content-Disposition
结果之前在响应中设置ok(file)
标头。
以下是示例代码:
public static Result myAction() {
...
response().setHeader("Content-Disposition", "attachment; filename=image.png");
return ok(file);
}
答案 1 :(得分:8)
Scala(Play 2.4.x)的神奇之处在于
def myAction() {
...
ok(file).withHeaders("Content-Disposition" -> "attachment; filename=image.png")
}
请注意,它是复数,它是一张地图,如果需要,您可以拥有多个值。
当然,您要做的下一件事就是让它实际下载,就像这样:
def myAction() {
...
ok(file).withHeaders(CONTENT_TYPE -> "application/x-download", CONTENT_DISPOSITION -> "attachment; filename=image.png")
}
请注意,Controller https://www.playframework.com/documentation/2.4.0/api/scala/index.html#play.api.mvc.Controller
中定义的大多数标头都有CONSTANTS