Blogs Media: CSS Mania | VivirLatino | Sentido Web | Apps Mania

Publicidad

Jue04May2006

Laboratorio: devolver ficheros con un determinador nombre en PHP

17:15 H (CET)| Temas: Laboratorio · PHP

Es común que nuestras aplicaciones web devuelvan ficheros, y es también muy común que cuando devolvemos esos ficheros el nombre sea el que no deseamos. Para indicar el nombre del archivo que devolvemos tenemos que modificar la cabecera HTTP con la instrucción header:

header("Content-Disposition: attachment; filename=\"el-nombre-que-queramos.png\";");

Si además tenemos que especificar el tipo de archivo con el Content-type, tan solo tendremos que añadirlo:

header("Content-Disposition: attachment; filename=\"el-nombre-que-queramos.png\"; Content-type: image/png");

Podéis ver un ejemplo aquí

Relacionados

1. JJ ~ Jueves, 04 May 2006 | 18:41H:

Yo ya no uso ese "truco" me fue imposible hacer que funcionase en IE 5, 5.5 y 6 por bugs de los navegadores.

Ahora prefiero usar urls del tipo fichero.php/nombre.pdf y para leer "/nombre.pdf" desde el script fichero.php uso la variable PathInfo

2. Luis ~ Jueves, 04 May 2006 | 20:28H:

¿En qué sentido no te funciona?, a mí no me ha dado problemas nunca, pero claro, puede que no haya usado el mismo caso que tú.

La verdad es que de IE me espero cualquier cosa.

3. JJ ~ Viernes, 05 May 2006 | 11:24H:

No recuerdo muy bien cuales eran los problemas (no se porque suelo recordar la solución, y la causa del problema, y casi nunca los síntomas del problema)... pero era algo así...

El típico caso de uso es cuando hay un script que crea un pdf, y queremos que al pulsar "guardar como" nos ponga de nombre algo así como "informe de enero.pdf" y no "report.php.rpt" que creo que es lo que pondría por defecto.

Eso lo controlamos con Content-Disposition, y además podemos poner attachment o inline con lo que teóricamente con inline el pdf se abre en el propio navegador y con attachment aparecería una ventana para guardar en disco.

Hasta ahí la teoría... porque en la practica eso no es así, y dependiendo de la versión del navegador los resultados son impredecibles.

Además si abres una ventana nueva usando javascript, que tenga como origen una página que use content-disposition las cosas aún se complican más, porque hay veces que incluso llega a perder la autentificación, y el IE vuelve a pedir el usuario y password.

Vamos... un lío, lió... en cambio si uso una url del tipo script.php/fichero.pdf nunca, nunca tengo problemas, incluso cuando lo hago a traición y no envío el tipo mime.

4. Luis ~ Jueves, 11 May 2006 | 00:35H:

Gracias JJ, siempre es bueno que las entradas se amplien con vuestras anotaciones.