Array de Bytes desde URL
En ocasiones necesitamos la información que nos devuelve una URL (ya sea porque esta es una imagen y deseamos guardar el archivo, o por el motivo que sea).
Se puede transformar la información contenida por la URL en un array de bytes y estos guardarlos en un archivo en nuestra máquina. Las funciones para esta transformación serían las siguientes:
//obtiene un array de byte de una url/fichero en este caso public byte[] GetBytesFromUrl(string url) { byte[] b; HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(url); WebResponse myResp = myReq.GetResponse(); Stream stream = myResp.GetResponseStream(); using (BinaryReader br = new BinaryReader(stream)) { b = br.ReadBytes(500000); br.Close(); } myResp.Close(); return b; } //Funcion para guardar un array de bytes en un fichero public void WriteBytesToFile(string fileName, byte[] content) { FileStream fs = new FileStream(fileName, FileMode.Create); BinaryWriter w = new BinaryWriter(fs); try { w.Write(content); } finally { fs.Close(); w.Close(); } }
En este código tan solo leemos una cantidad fija de bytes.
En función de la información que contenga la url debemos guardar un tipo de fichero u otro. Es decir esto funciona para todo tipo de información (imágenes, documentos de texto). Veamos unos ejemplos de maneras de llamar a estas funciones:
byte[] img = GetBytesFromUrl(@"http://maps.google.com/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&zoom=14&size=512x512&maptype=roadmap&markers=color:blue|label:S|40.702147,-74.015794&markers=color:green|label:G|40.711614,-74.012318&markers=color:red|color:red|label:C|40.718217,-73.998284&sensor=false"); WriteBytesToFile(@"C:\imagen.jpg",img); byte[] arch = GetBytesFromUrl(@"http://sauce.pntic.mec.es/~jpeo0002/Archivos/PDF/T01.pdf"); WriteBytesToFile(@"C:\archivo.pdf",arch);
Comentarios
Publicar un comentario