play.mvc.Results.ok(file) を介して、コントローラーからファイルを返しています。ただし、ファイルは特定のファイル名なしで「ダウンロード」としてダウンロードされます。ダウンロードの名前 (つまり、image.png) を設定する方法はありますか?
ありがとう
play.mvc.Results.ok(file) を介して、コントローラーからファイルを返しています。ただし、ファイルは特定のファイル名なしで「ダウンロード」としてダウンロードされます。ダウンロードの名前 (つまり、image.png) を設定する方法はありますか?
ありがとう
特定のファイル名を定義するにはContent-Disposition
、結果を返す前に応答にヘッダーを設定する必要がありますok(file)
。
サンプルコードは次のとおりです。
public static Result myAction() {
...
response().setHeader("Content-Disposition", "attachment; filename=image.png");
return ok(file);
}
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で定義されているほとんどのヘッダーに定数があることに注意して ください。