JASoft.org

El blog de José Manuel Alarcón Aguín. Programación web y mucho más...

MENÚ - JASoft: JM Alarcón

Forzar la descarga de un archivo desde Azure Blob Storage

Hoy un truco rápido pero muy útil en ciertas ocasiones.

Azure Blob Storage nos permite almacenar archivos de todo tipo accesibles desde la Web a un coste ridículo y con altas prestaciones de velocidad y ancho de banda. Es una buena manera de poner a disposición de la gente todo tipo de archivos, especialmente si son grandes, de modo que si se descargan mucho no acaparen el ancho de banda del servidor de nuestra web, por ejemplo.

Si por ejemplo subimos imágenes o vídeos, lo habitual es que queramos que se descarguen bajo demanda, mostrándose en el navegador. De este modo los enlazamos desde una web, como recursos de la página, y se obtienen desde Azure, que actúa como una especie de caché externa para no ocuparnos ancho de banda.

Sin embargo, a veces querremos que si alguien usa la dirección del recurso en Azure de manera directa, que en lugar de abrirse en el navegador se le descargue el archivo al disco duro. Un ejemplo: un archivo PDF que queremos que se puedan descargar.

Si subimos a Azure Storage un PDF, cuando lo enlacemos se descargará y se abrirá directamente en el navegador. Si preferimos que no sea así y que directamente pregunte al usuario dónde se lo quiere descargar en el disco duro ¿cómo podemos conseguirlo?

Cabeceras de disposición del contenido

La diferencia entre un archivo que se ve en el navegador y uno al que se fuerza la descarga es tan solo una cabecera que devuelve el servidor y que se llama Content-Disposition. Si en esta cabecera ponemos el valor attachment le estamos indicando a los navegadores que queremos que el archivo se descargue. Además le podemos indicar el nombre que le queremos dar a dicho archivo si le añadimos la propiedad filename. Algo así:

content-disposition: attachment;filename=MiArchivo.pdf

O sea, que en realidad lo único que necesitamos es añadir esta cabecera a nuestro archivo. Pero ¿es posible hacerlo?

Hace ya unos años (a finales de 2012) Microsoft añadió a azure la posibilidad de establecer cabeceras personalizadas a los archivos que se almacenaban en Blobs. Lamentablemente la única manera de hacerlo, incluso hoy en día, es mediante código. Es decir, no hay una manera desde el portal de Azure de establecerlas manualmente. Una pena y una dejadez por parte de Microsoft en mi opinión.

Sin embargo hay una manera rápida y sencilla de hacerlo utilizando una herramienta externa. Se trata de la indispensable Azure Storage Explorer, una app gratuita y multi-plataforma de la propia Microsoft, que permite gestionar de manera rápida y sencilla todo el almacenamiento que tenemos en Azure.

En esta herramienta, si navegas hasta tu Blob y pulsas sobre el botón de "Propiedades":

se abre un cuadro de diálogo en el que, entre otras cosas, te permite establecer algunas cabeceras comunes para el archivo. Ente ellas, por suerte, está la de la disposición del contenido, como podemos ver en esta figura:

En este caso le indico que sea un archivo para descarga y además le cambio el nombre original para que, por defecto, el que nos ofrezca en el cuadro de diálogo sea el que me interese.

También podemos cambiar otras cabeceras comunes como por ejemplo el tipo de caché que queremos que se haga del archivo, la codificación de éste, el idioma o incluso el tipo MIME que le queramos asociar (¡podríamos mentir!).

Gracias a esta herramienta podemos obtener un mayor control sobre el comportamiento de los archivos que almacenemos en Azure Blob Storage.

¡Espero que te sea útil!

 

José Manuel Alarcón José Manuel Alarcón
Fundador de campusMVP.es, el proyecto de referencia en formación on-line para programadores en lengua española. Autor de varios libros y cientos de artículos. Galardonado como MVP de Microsoft desde 2004. Gallego de Vigo, amante de la ciencia y la tecnología, la música y la lectura. Ayudando a la gente en Internet desde 1996.
Descarga GRATIS mi último libro (no técnico): "Tres Monos, Diez Minutos".
Banner

Agregar comentario