播放框架设置下载文件名

时间:2013-06-10 15:22:28

标签: playframework playframework-2.0 playframework-2.1

我正在通过play.mvc.Results.ok(文件)从控制器返回一个文件。但是,文件下载为“下载”,没有特定的文件名。有没有办法设置下载名称(即image.png)?

由于

2 个答案:

答案 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