Storage File en Azure y lectura en Cliente MVC

 

Lo primero que tenemos que hacer es entrar en nuestra cuenta de Azure, y aunque allí se ven muchas cosas por la cantidad de opciones que nos ofrece Azure, lo que tenemos que hacer es utilizar el buscador y ahí introducir: Cuentas de Almacenamiento.

Una vez se nos abre el espacio para las cuentas, tenemos que crear una:

Tras darle a crear nos saldrá el siguiente recuadro el cual tenemos que rellenar correctamente.

Ahora vamos a completar con los datos que necesitamos.

En nombre, yo por ejemplo utilizaré ejemplostorage1.

Donde la implementación la dejamos cómo viene por defecto, Resource Manager.

Tipo de cuenta, Uso General, aunque os deje poner otra cosa.

Ahora en el siguiente campo, dónde vemos Replicación, lo ponemos en Almacenamiento con redundancia geográfica.

Tras eso vemos el Cifrado del Servicio, lo dejamos Deshabilitado. En Suscripción hay que colocar la que cada uno tenga. En Grupo de Recursos, creamos uno nuevo. Y la ubicación, depende de dónde cada uno esté se pone lo que corresponda. En mi caso, Oeste de Europa.

Esperamos unos instantes a que se realice la implementación, podemos ver el progreso arriba a la derecha, ya que nos sale un aviso.

Si se completa y no sale, simplemente le damos a actualizar para que aparezca.

Una vez lo tengamos, le damos click y nos lleva a las opciones de lo que acabamos de crear.

Si nos fijamos información general, veremos un apartado que es el que nos interesa. El de archivos.

Le damos a Archivos y nos saldrá que no tenemos ningún recurso así que tenemos que crearlo

Ahí simplemente le ponemos un nombre y elegimos los gigas que vamos a necesitar. En este ejemplo, usaremos 1Gb ya que es un simple texto en el bloc de notas.

Una vez creado le damos click y vemos la ventana en la que vamos a cargar lo que queremos subir.

Cuando le damos a cargar, tenemos que seleccionar el archivo, en el dibujo de las carpetas, y ahí seleccionamos lo que queremos subir.

Y ya seleccionado lo que queremos, le damos a abrir y después a cargar.

 

Después tenemos que volver a nuestra Cuenta de Almacenamiento, y esta vez, donde vamos es a Claves de acceso. Y copiamos la primera que nos sale.

Ahora lo que tenemos que hacer es ir a nuestro Visual Studio. Porque lo que vamos a hacer es consumir el texto en Azure desde MVC.

Luego encima del nombre del proyecto le damos click derecho y en el desplegable seleccionamos Administrar Paquetes NudGets (Se ve con un icono de regalo).

Y buscamos WindowsAzure.Storage en Explorar o Browser, es el primero que nos sale, y lo instalamos:

Una vez instalado ese buscamos otro más, ConfigurationManager, y también el primero que nos sale:

 

Tras eso vamos a WebConfig, donde tenemos que añadir esta línea aunque la modificaremos:

<add key=”StorageConectionString” value=”DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=StorageAccountEndingIn==”/>

Donde las claves de la cuenta de almacenamiento que hemos creado, tenemos que cambiar lo de myaccount por el nombre, aquí ejemplostorage. Y en AccountKey copiamos la primera. Eso es lo único que hay que cambiar en esta línea. Recordemos cómo era lo de las Keys

Tras crear el Proyecto MVC nos vamos al Web.config y cambiamos lo que hemos visto antes. Por nuestra cuenta y nuestra clave.

Quedaría así:     <add key=”StorageConnectionString” value=”DefaultEndpointsProtocol=https;AccountName=cuentaalmace;AccountKey=5jC+IVTw9JW+X2s9+81JU2Jt1OER0qxr+Y5ArLcgOJE3W96pPq6GM9A1b149gacGMdcTJQwiMZ5ae5qoAAHG4A==” />

Después creamos un modelo en la carpeta de models. Lo primero es crear los usings que vamos a utilizar:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using Microsoft.Azure;

using Microsoft.WindowsAzure.Storage;

using Microsoft.WindowsAzure.Storage.File;

using System.Threading.Tasks;

 

Y luego rellenamos el  modelo:

public async Task<String> GetContenidoFile(String nombrefichero)

{

CloudStorageAccount cuentastorage;

cuentastorage = CloudStorageAccount.Parse(

CloudConfigurationManager.GetSetting(“StorageConnectionString”));

Tenemos que tener un cliente para acceder al archivo:

CloudFileClient fileClient = cuentastorage.CreateCloudFileClient();

 

Necesitamos una referencia al archivo subido

CloudFileShare share = fileClient.GetShareReference(“ejemplostorage”);

if (share.Exists())

{

Tenemos que recuperar el directorio.

CloudFileDirectory carpeta = share.GetRootDirectoryReference();

CloudFile fichero = carpeta.GetFileReference(nombrefichero);

if (fichero.Exists())

{

String contenido = await fichero.DownloadTextAsync();

return contenido;

}

else

{

return null;

}

}

return null;

}

}

 

El siguiente paso es que creamos el Controlador.

Con los siguientes usings y recordemos incluir el del modelo.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Threading.Tasks;

using System.Web;

using System.Web.Mvc;

using EjemploStorageFile.Models;

 

Y lo completamos con los necesarios GET y POST

namespace EjemploStorageFile.Controllers

{

public class FicherosController : Controller

{

// GET: Ficheros

public ActionResult Index()

{

return View();

}

//POST: Ficheros

[HttpPost]

public async Task<ActionResult> Index(String nombrefichero)

{

if (nombrefichero == null)

{

nombrefichero = “storage.txt”;

}

ModeloStorage servicio =  new ModeloStorage();

String contenido = await servicio.GetContenidoFile(nombrefichero);

ViewBag.ContenidoFichero = contenido;

return View();

}

}

}

 

Por último creamos una vista, en mi caso una vista Index, y ya lo que hacemos es pintar lo que queremos que se vaya a ver:

@{

ViewBag.Title = “Index”;

}

<h2>Lectura de ficheros Storage</h2>

<form method=”post”>

<label>Instroduce el nombre del archivo a leer: </label>

<input type=”text” name=”nombrefichero”

class=”form-control”

placeholder=”Nombre de archivo” />

<button type=”submit” class=”btn-success”>

Leer Fichero Storage

</button>

</form>

@if (ViewBag.ContenidoFichero != null)

{

<hr />

@Html.Raw(ViewBag.ContenidoFichero)

}

Y finalmente vemos cómo funciona:

 

 

 

Descripción: Aprende a crear cuentas de almacenaje en Azure y consumirlas en MVC.

Autor/a: Carla Gradillas

Curso:Microsoft MCSD Web Applications + SharePoint Apps

Centro: Tajamar

Año académico: 2016-2017

LinkedIn: https://www.linkedin.com/in/carlagradillas/