Gracias Angel, gracias Carlos
Muy valioso el material y opiniones
Bueno....a trabajar!
Gracias nuevamente a ambos
Saludos
Carlos A. Schroeter

El 14/09/10 08:48, Carlos Peix escribió:
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 <[email protected] <mailto:[email protected]>>

    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