El Blob Storage de Windows Azure es el servicio de almacenamiento para grandes cantidades de datos estructurados, en este post veremos cómo subir una imagen a él desde una Universal Windows Platform App
Configurando el Storage en Windows Azure
Como primer paso vamos entrar en el portal de Azure y vamos a agregar un nuevo servicio de almacenamiento, esto se logra seleccionando data services -> storage -> Quick create, después asignaremos un subdominio y su ubicación en los servidores de Azure y daremos clic en Create Storage Account.
Una vez Azure termine el proceso de creación te enviará al dashboard, debes seleccionar la opción containers y dar clic en Create a container.
Esto nos mostrará un pop-up como el de la imagen siguiente donde tienes que especificar un nombre para tu nuevo contenedor y dar clic en el botón de aceptar.
Al finalizar el proceso Azure nos mostrará la siguiente pantalla donde debes dar clic en la opción Manage Access Keys.
Te mostrará un pop-up como el siguiente, debes copiar el nombre y la llave primaria ya que la utilizaremos más adelante.
Proyecto Universal Windows Platform App
Con lo anterior hemos terminado el proceso en Azure y ahora vamos a agregar el proyecto de nuget, para ello da clic derecho en las referencias y selecciona la opción Manage Nuget Packages.
Después busca el paquete Windows.Azure.Storage y da clic en instalar.
Te mostrará los paquetes a instalar y debes dar clic en Ok.
Después te pedirá autorización y debes aceptar.
Una vez instalados vamos a crear una clase que nos ayudará a subir los archivos llamada BlobStorageHelper, en esta clase vamos a crear tres campos, el primero será de tipo CloudStorageAccount que nos servirá para administrar la cuenta de almacenamiento, los otros dos van a ser de tipo string y almacenarán el nombre de la cuenta y la llave que guardamos en uno de los pasos anteriores como se muestra en el siguiente código.
|
|
En el constructor vamos a crear un campo de tipo StorageCredentials al cual proporcionaremos el nombre de la cuenta y la llave, después crearemos la instancia de _storageAccount y en el constructor pasaremos la instancia de StorageCredentials y como segundo parámetro indicaremos si se utilizará el transporte HTTPS por medio de un tipo bool.
|
|
Ahora vamos a crear un método que nos permita subir nuestras imágenes al Blob Storage en el cual pasaremos el nombre del contenedor, el nombre del archivo y por ultimo una instancia de StorageFile.
A grandes rasgos en este método crearemos un cliente encargado de manejar el Blob Storage, después obtendremos una referencia al contenedor y nos aseguramos de crearlo si es que este no existe, por último obtenemos una referencia a un bloque del Blob y subimos el archivo.
|
|
Ahora crea una pantalla como la que se muestra a continuación.
En el code-behind de nuestra pantalla vamos a agregar un campo de tipo StorageFile que nos servirá para almacenar la imagen.
|
|
En el método encargado de controlar el clic del botón “tomar imagen” agregaremos el siguiente código para poder tomar una fotografía y mostrarla.
|
|
Después en el método encargado de controlar el clic del botón “Subir imagen” agregaremos el siguiente código que utilizará la clase que hemos creado para subir la imagen al Blob Storage. (Cambia el nombre de los controles por los que tú utilices)
|
|
Y con esto ya podrás agregar las imágenes al Blob Storage de Azure desde una Universal Windows Platform App, ahora te invito a que pruebes la app desde tu escritorio o desde tu teléfono, en mi caso lo haré desde el teléfono.
Por último te invito a comprobar desde el portal de Azure que la imagen se encuentra en el contenedor.
Puedes copiar y pegar la url de la imagen en un explorador para verla tal como se muestra en la siguiente imagen.
Como ya es costumbre es código lo dejo en GitHub.
¡Saludos!