2009/3/20 Fernando G. [email protected]
Estoy intentando hacer un reder :file para enviar un fichero al
navegador pero el nombre de fichero que el navegador reconoce es el de
la acción del controlador y no el nombre original del fichero.
Si no utilizas send_file como bien dice borja MartÃn, tendrás que poner
la
cabecera a mano.
Tienes que establecer la cabecera:
headers[“Content-Disposition”]
Que viene especificada en el rfc2183.
http://www.ietf.org/rfc/rfc2183.txt
En la página 2 del dicho documento dice:
In the extended BNF notation of [RFC 822], the Content-Disposition
header field is defined as follows:
disposition := “Content-Disposition” “:”
disposition-type
*(";" disposition-parm)
disposition-type := “inline”
/ "attachment"
/ extension-token
; values are not case-sensitive
disposition-parm := filename-parm
/ creation-date-parm
/ modification-date-parm
/ read-date-parm
/ size-parm
/ parameter
filename-parm := “filename” “=” value
creation-date-parm := “creation-date” “=” quoted-date-time
modification-date-parm := “modification-date” “=” quoted-date-time
read-date-parm := “read-date” “=” quoted-date-time
size-parm := “size” “=” 1*DIGIT
quoted-date-time := quoted-string
; contents MUST be an RFC 822 `date-time'
; numeric timezones (+HHMM or -HHMM) MUST be used
Como ves, puedes especificar todo.
Si quieres, hacer un helper o plugin para manejar dicha cabecera
facilmente
con un hash serÃa útils.
Resumiendo, y si no me equivoco:
headers[“Content-Disposition”] = “inline; filename=‘nombre de
archivo’”
Como cosa interesante, el inline.
Inline significa que lo abra el navegador (los pdfs incrustados).
Si en vez de inline, pones attachment, el archivo se descargara (los
pdfs
que se descargan).
Un Saludo.