Vanguarsoft Developers blog

Ing. Javier Leal -Desarrollador CPANAX C.A / Microsoft Student Partners – VENEZUELA

Obtener un Archivo a partir de una Url – Silverlight

Deja un comentario

urlBuenos días internautas de nuevo iniciare con mis artículos en esta ocasión les traigo algo bastante sencillo, pero que puede llegar a ser muy útil dependiendo de las necesidades de la aplicación que estén desarrollando.

A mi me sirvo mucho en uno de mis desarrollos y me pareció interesante publicarlo ya que para lograr hacerlo encontré pocas referencias en español, basados en esto comenzamos…

Primero que nada vamos a ver una url que lleva a una archivo en este ejemplo es una imagen pero estamos hablado de que esto puede ser un archivo de cualquier extensión .rar .doc .png, la idea es obtener un arreglo de Byte o el stream de este archivo y ya tu personalmente si lo quieres mostrar se haría el código necesario a partir de arreglo de Byte o Stream:

En pocas palabras y resumiendo vamos a obtener a partir de una URL e Arreglo de byte y Stream del archivo que viene en esa URL.

url de Ejemplo almacenada en una variable string:

CODIGO C SHARP

string URL = “http://png-4.findicons.com/files/icons/1636/file_icons_vs_3/256/url.png”;

Para lograr esto utilizaremos las clases: HttpWebRequest, WebRequest, IsolatedStorageFileStream

Es importantes recalcar que para lograr esto se utilizo el IsolateStorage para almacenar la imagen temporalmente y eliminarla luego de obtener el Array Byte a partir del archivo almacenado en el Isolate Storage.

Antes de procesar podrías validar si la url en verdad se trata de un archivo obteniendo la extensión que son los tres últimos valores de la url.

Cabe destacar que una Url que te trae un archivo no siempre tiene la extensión puede no tenerla y igualmente representar un archivo pero se tendría que buscar otra manera de saber de que tipo de archivo de trata, si tiene la extensión podrás validad de una vez para saber que es lo que me mostrara en la interfaz.

CODIGO C SHARP

string ExtensionFile = System.IO.Path.GetExtension(URLFile).ToLower();

Una ver que tenemos nuestra Url en una variable ya validad la procesamos utilizando la clase anteriormente mencionada.

Se declara una variable Global:

CODIGO C SHARP

IsolatedStorageFileStream streamToWriteTo;

El siguiente código debes incluirlo en el botón y método donde deseas capturar el archivo a partir de la url:

CODIGO C SHARP

streamToWriteTo = new IsolatedStorageFileStream(“NOMBREFILE”, FileMode.Create, file);

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);

request.AllowReadStreamBuffering = false;
request.BeginGetResponse(new AsyncCallback(GetData), request);

NOMBREFILE es el nombre que llevara el archivo dentro de IsolateStorage de silverlight Temporalmente.

Método GetData.

CODIGO C SHARP

private void GetData(IAsyncResult result)
{
    HttpWebRequest request = (HttpWebRequest)result.AsyncState;
    HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result);

    Stream str = response.GetResponseStream();

    byte[] data = new byte[16 * 1024];
    int read;

    long totalValue = response.ContentLength;
    while ((read = str.Read(data, 0, data.Length)) > 0)
    {
        if (streamToWriteTo.Length != 0)
            streamToWriteTo.Write(data, 0, read);
    }

     streamToWriteTo.Close();
    //Completado
}

Una vez que este proceso se ha completado puedes buscar l archivo en el IsolateStorage de Silverlight

CODIGO C SHARP

using (IsolatedStorageFile isolatedStorageFile = IsolatedStorageFile.GetUserStoreForApplication())
{
    if (isolatedStorageFile.FileExists(“NOMBREFILE”))
    {

         //AQUI TENEMOS EN STREAM

        IsolatedStorageFileStream isolatedStorageFileStream = isolatedStorageFile.OpenFile(CargarfILE, FileMode.Open, FileAccess.Read);

        //AQUI TENEMOS EL ARRAYBYTE

        byte[] ArrayFile = new byte[isolatedStorageFileStream.Length];
        isolatedStorageFileStream.Read(ArrayFile, 0, ArrayFile.Length);
        isolatedStorageFileStream.Dispose();
    }

}

Con ese Stream o el Arreglo de Bute puedes hacer muchas cosas almacenarlo en una base de datos, Mostrar en un visor de imagen si se trata de una imagen, visor de pdf, documentos, Musica, Video Etc.

Espero que les sea muy útil, tanto como a mi.

Autor: Ing. Javier J. Leal H.

Desarrollador en CPANAX C.A, Microsoft Student Partners de Venezuela Amantes de nuevas Tecnologías Desarrollador es Silverlight 5, Windows 8, Windows Phone, Influenciador y Orador en Actividades Tecnológicas Microsoft

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s