Jak ściągnać plik na dysk lokalny ?

Odpowiedz Nowy wątek
2006-11-20 11:04
0

Witam,
Szukam po google, msdn itd i wiem jak wyswietlic sobie zrodlo stronki np.

 System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(www);
System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();
System.IO.Stream vStream = response.GetResponseStream();
System.IO.TextReader tekst = new System.IO.StreamReader(vStream);
return tekst.ReadToEnd();

A jak mozna sciagnac plik na dysk lokalny chce sciaganc plik http://serwer/plik na np c:?


</u>

Pozostało 580 znaków

2006-11-20 11:12
0

Odczytaj ze strumienia i zapisz do pliku to co otrzymales.


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-11-20 11:31
0

moglybys podac przyklad?
probowalem StreamReader'em ale dostalem wyjatek: ULI not supported.

pozdr
Mariusz


...This is not war, this is pest control!...

Pozostało 580 znaków

2006-11-20 11:43
0

Mam znalazlem :

using System.Net;

...

WebClient Client = new WebClient();
Client.DownloadFile("http://serwer/plik", "C:\\plik");

Ale banałek :)

Pozostało 580 znaków

2006-11-20 11:46
0

Np. tak:


System.Net.HttpWebRequest vRequest = (System.Net.HttpWebRequest) System.Net.WebRequest.Create("http://4programmers.net");
System.Net.HttpWebResponse vResponse = (System.Net.HttpWebResponse) vRequest.GetResponse();
System.IO.Stream vStream = vResponse.GetResponseStream();
System.IO.FileStream vFileStream = System.IO.File.Open(@"c:\plik.txt", System.IO.FileMode.Create);
byte []buffer = new byte[1024];
int read;
while((read = vStream.Read(buffer, 0, 1024)) > 0)
vFileStream.Write(buffer, 0, read);



//edit
@powyzej: a podobno WebClient Ci nie dzialal...

You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-11-20 11:51
0
johny_bravo napisał(a)

powyzej: a podobno WebClient Ci nie dzialal...

A kto mowił ze nie dzialal, nie myslalem ze tak latwo to mozna zrealizwoac.
I teraz mam koljene pytanko, Twoja metoda jest lepsza bo mozna latwo ją polaczyc z progressbarem a teraza jak pobrac rozmiar pliku przed sciagnieciem go ?

Pozostało 580 znaków

2006-11-20 11:59
0

W poprzednim poscie pisales, ze nie dzialal. Rozmiar odpowiedzi powinien byc w zwracanym naglowku - Content-Length:


Console.WriteLine(vResponse.ContentLength);



- 1, jesli nie zostal ustawiony.

You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-11-20 12:05
0
johny_bravo napisał(a)

W poprzednim poscie pisales, ze nie dzialal. Rozmiar odpowiedzi powinien byc w zwracanym naglowku - Content-Length:


Console.WriteLine(vResponse.ContentLength);



- 1, jesli nie zostal ustawiony.

A jeżeli hcodzi o moja metoda z WebClient ?
Jest tam taka metoda jak DownloadProgressChanged http://msdn2.microsoft.com/en-gb/library/system.net.webclient.downloadprogresschanged.aspx jak to ugrysc zeby podpiac sciaganie pod progressbara? </url>

P.S. Kod ktory ty przedstawiles zapisuje chyba zrodlo stronki do pliku a mi chodzilo jak sciagnac pliczek np jpg i np wrzucic go do Image fotka = new Image();
Moje rozwiazanie z tym Download jest dobre ale zostaja smieci na dysku a nie chce nikomu zasypywac kompa smieciamiu, tylko sciagam np 50 zdjec do tablicy Image-ów i sobie je wyswietlam.

Pozostało 580 znaków

2006-11-20 12:40
0

To nie metoda, a zdarzenie. Podpinasz tam jakas swoja metode, ktora bedzie wywolana w momencie wystapienia tego zdarzenia.

//edit
Nic nie stoi na przeszkodzie, zeby ze strumienia wczytac do obiektu Image - generalnie WebRequest jest bardziej wszechstronne niz WebClient, chociaz to drugie jest latwiejsze w obsludze. Napisalem przyklad z WebRequest, bo pisales, ze masz, a nie z WebClient, bo nie dzialal.


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-11-20 13:03
0

Ok jarze :-)

I teraz jeszcze pytanko odnosnie zdarzenia DownloadProgressChanged.
Pod przyciskiem mam cos takiego :

 private void button2_Click(object sender, EventArgs e)
        {
            WebClient Client = new WebClient();     
            Client.DownloadFile("http://www.serwer/NAZWA.JPG", "c:\\NAZWA.JPG");
        }

Sciaga pliczek i wszystko jest OK ale jezeli to bedzie plik np z 50MB to chcialbym wiedziec ile sie go juz sciagnelo i znaalzlem wlasnie zdarzenie DownloadProgrssChenged, zrobilem wiec tak:

 private void Client_DownloadProgressChenged(object sender, EventArgs e)
        {
            MessageBox.Show("s");

        }

Srodek jest bez sensu chodzi tylko o samo wywolanie, ale nie wiem czy dobrze bo plik sie sciaga ale Message sie nie pokazuje nigdy. Jak podpiac cos pod to zdarzenie zeby akurat sie odnosilo to tego pliku NAZWA.JPG ?

P.S. W c# jestem od tygodnia wwiec jak robie glupie bledy merytoryczne to sory ale mysle ze komus ten watek napewno sie przyda.

Pozostało 580 znaków

2006-11-20 13:06
0


WebClient Client = new WebClient();
Client.OnDownloadProgressChanged += new EventHandler(twoja_obsluga_zdarzenia);


You need to learn how to walk
before you can run

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0