Enviar archivos al navegador del cliente
Para mandar el contenido de un archivo al browser o navegador del cliente, y presentarle el cuado de diálogo si desea abrir, guardar o cancelar este archivo, se debe cumplir lo siguiente:
Construir una página sin código html. Esto es muy importante ya que cuando se envíe el contenido del archivo, no debe haberse enviado código html ya que la mezcla de estos (el código y el archivo) hará que el navegador del usuario no entienda bien el contenido.
En el código fuente de esta página, agregar las siguientes líneas (los números son sólo de referencia)
1.- Response.ClearHeaders();
2.- Response.ClearContent();
3.- Response.AddHeader("Content-Disposition", "attachment;filename=NOMBRE_DEL_ARCHIVO");
4.- Response.ContentType = "application/pdf";
5.- Response.BinaryWrite(ARREGLO_DE_BYTES_CON_EL_CONTENIDO_DEL_ARCHIVO);
6.- Response.Flush();
7.- Response.Close();
En este caso, las líneas 1 y 2 limpian el buffer que se haya llenado con información que no corresponde al archivo. Esto es necesario si en algún momento antes de haber llegado a estas líneas, se hizo algún response.write.
Las líneas 3 y 4 le dicen al navegador del cliente las instrucciones correspondientes al envío de un archivo llamado NOMBRE_DEL_ARCHIVO y del tipo que es. En este caso, se le especifica que es un pdf. Más abajo se desplegarán los tipos más comunes, y un link a una página muy completa con los tipos existentes.
La línea 5 escribe el arreglo de bytes del archivo en el cliente. Posteriormente entregaré una función para sacar un arreglo del bytes de un archivo.
Por último, las líneas 6 y 7 vacían el buffer y cierran el envío al cliente.
Un listado con algunos de los tipos MIME más comunes:
|
Texto Plano |
text/plain |
|
Imagen gif / jpg |
image/gif o image/jpeg |
|
Video Mpeg |
video/mpeg |
|
Postscript |
application/postscript |
|
Pdf |
application/pdf |
|
MS Powerpoint |
application/mspowerpoint |
|
MS Excel |
application/vnd.ms-excel o application/ms-excel |
La URL con muchos de los tipos MIME disponibles es:
http://www.utoronto.ca/webdocs/HTMLdocs/Book/Book-3ed/appb/mimetype.html
Patrick
Publicado, Noviembre 2004.
Revisado, Enero 2007.