Hola colega,

Aca pego un codigo que he usado, esta medio retocado para sacarlo de la
clase original, entre el codigo que no pude pegar aca esta todo lo necesario
para el dispose de los objetos , control de excepciones, etc.

Este codigo usualmente baja archivos de varias decenas de MB.

public DownloadFile()
{
WebRequest webRequest = WebRequest.Create( "http://tusitio.com/tuarchivo"; );
 WebResponse webResponse = webRequest.GetResponse();
 int percent = 0;
 long totalDownloaded = 0;

Stream stream = webResponse.GetResponseStream();
 byte[] buffer = new byte[DOWNLOAD_BLOCK];

long size = webResponse.ContentLength;
 int readCount = stream.Read( buffer, 0, DOWNLOAD_BLOCK );

while( readCount > 0 )
 {
totalDownloaded += readCount;
double actual = (totalDownloaded*100)/size;
 SaveToFile( buffer, readCount, "archivo-en-tu-disco" );

if ( (percent != actual) && (actual%5 == 0) )
 {
percent = (int)actual;
}

readCount = stream.Read( buffer, 0, DOWNLOAD_BLOCK );
}

 stream.Close();
webResponse.Close();
}

La constante DOWNLOAD_BLOCK la tengo en 2048 y el metodo SaveToFile es
trivial pero igual lo copio:

private void SaveToFile( byte[] buffer, int count, string fileName )
{
 FileStream fileStream = null;

fileStream = File.Open( fileName, FileMode.Append, FileAccess.Write );
 fileStream.Write( buffer, 0, count );

if( fileStream != null )
 {
fileStream.Close();
}
}

----------------------------------
Carlos Peix

2010/9/14 Carlos A. Schroeter <cschroe...@prodytec.com.ar>

>  Hola Grupo
> Apelo una vez mas a su valiosa ayuda
> Estoy bajando con una aplicacion de consola un archivo utilizando
> my.computer.network.donwloadfile
> El tema es que el archivo en cuestion es bastante pesado, y aun cuando
> termina bajandolo sin problemas el usuario no puede visualizar que esta
> pasando, aun cuando pongo a verdadero el parametro de visualizar el el
> estado del proceso (supongo porque no es una aplicacion winform)
> Hay manera de visualizar el proceso en una aplicacion de consola?....me
> conformo con algo asi como Console.WriteLine(porcentajeavance)
> Desde ya muchas gracias
>
> --
> *Carlos A. Schroeter
>
>
> *
>

Responder a