2013-06-10 4 views
5

Sto restituendo un file da un controller, tramite play.mvc.Results.ok (file). Tuttavia, il file viene scaricato come "download", senza un nome file specifico. C'è un modo per impostare il nome per il download (ad esempio image.png)?Play framework set scaricare il nome file

Grazie

risposta

11

Al fine di definire un nome specifico, è necessario impostare un Content-Disposition intestazione nella risposta prima di restituire il ok(file) Risultato.

Ecco un esempio di codice:

public static Result myAction() { 
    ... 
    response().setHeader("Content-Disposition", "attachment; filename=image.png"); 
    return ok(file); 
} 
5

La magia di questo a Scala (Play 2.4.x) è

def myAction() { 
    ... 
    ok(file).withHeaders("Content-Disposition" -> "attachment; filename=image.png") 
} 

Avviso che è plurale, la sua una mappa e si può avere più valori se necessario.

Naturalmente la prossima cosa che vorrete fare è rendere una scarica reale che si fa in questo modo:

def myAction() { 
    ... 
    ok(file).withHeaders(CONTENT_TYPE -> "application/x-download", CONTENT_DISPOSITION -> "attachment; filename=image.png") 
} 

Avviso ci sono delle costanti per la maggior parte le intestazioni definite nel controller https://www.playframework.com/documentation/2.4.0/api/scala/index.html#play.api.mvc.Controller