Gå til innhold

Nedlasting av fil fra http


Anbefalte innlegg

Sitter og funderer på en liten ting. Holder på med en liten sak som skal laste ned en exe-fil fra http og lagre den på lokal maskin. Ved å bruke denne, så funker det (men tar tid og masse ressurser)

 

WebRequest req = HttpWebRequest.Create("http://decon.no/mudo/test.exe");
WebResponse res = req.GetResponse();

Stream s = res.GetResponseStream();
byte[] file = new byte[res.ContentLength];
FileStream fs = new FileStream(path + "/test.exe", FileMode.CreateNew);

for(i = 0; i < (int)res.ContentLength; i++)
{
s.Read(file, i, 1);
}

fs.Write(file, 0, file.Length);
fs.Close();
s.Close();

 

Men hvis jeg prøver å inkrementere i med f.ex 1024 for hver runde (og sette count på Stream.Read(byte[] buffer, int offset, int count) til 1024, i stedet for 1) så blir fila feil på maskinen etter at den er lastet ned.

 

Noen forslag til hva som skjer, evt forslag til en bedre måte å gjøre dette på?

Lenke til kommentar
Videoannonse
Annonse
Med å bruke denne, så funker det (men tar tid og masse ressurser)

Lurer på om det kan være en ide å slenge det inn i en thread. Kanskje det vil hjelpe deg? ikke vet jeg...

 

Jeg la med et "live update program". Det er ikke jeg som har skrevet det, men det funker fint... Bare å kikke litt rundt i koden... Kan ikke huske at det tar lang tid eller bruker mye ressurser

Updater.Net.zip

Endret av inherit
Lenke til kommentar

hjertelig takk :)

 

Ved første øyekast ser dette ut til å være akkurat det jeg trenger.

 

Nå gjenstår det bare for meg å knote meg gjennom og lese vb :p

 

Men jeg lurer fortsatt på hvorfor koden min feilet når jeg prøvde å laste ned en og en kb da :p

Lenke til kommentar

Letteste måte å laste ned fil:

 

using( WebClient wc = new WebClient() )

{

wc.DownloadFile("http://decon.no/mudo/test.exe", path + "\\test.exe");

}

 

 

 

Ellers:

 

* ContentLength er ikke alltid tilgjengelig ved nedlastning fra web, så det kan være dumt å sette av en viss størrelse til fila.

* Er kanskje lurt å dumpe det man laster ned til fil fortløpende for å spare minne.

* Vet ikke hva du gjorde som ikke virket med større buffere, sikkert bare en liten logisk feil...

 

WebRequest req = HttpWebRequest.Create( "http://decon.no/mudo/test.exe" );

WebResponse res = req.GetResponse();

 

Stream s = res.GetResponseStream();

FileStream fs = new FileStream(path + "\\test.exe", FileMode.CreateNew);

 

byte[] buff = new byte[ 4096 ];

int count = 0;

while( 0 != (count = s.Read(buff,0,buff.Length)) )

{

fs.Write(buff,0,count);

}

fs.Close();

s.Close();

Lenke til kommentar

Fjernet det fra feil tråd. Så det i dag :p hehe. Er ikke så lett å være konsentrert om mye på en gang på jobb ;)

 

og ja, jeg veit hvordan jeg lager en ny tråd, men gadd rett og slett ikke :D hehe.

 

(Du var ikke online i min liste når jeg la inn dette ;))

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...