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
*