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