Jak ściągnać plik na dysk lokalny ?

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>
0

Odczytaj ze strumienia i zapisz do pliku to co otrzymales.

0

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

pozdr
Mariusz

0

Mam znalazlem :

using System.Net;

...

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

Ale banałek :)

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...

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 ?

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.</li> </ul>
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 <a href="http://msdn2.microsoft.com/en-gb/library/system.net.webclient.downloadprogresschanged.aspx">http://msdn2.microsoft.com/en-gb/library/system.net.webclient.downloadprogresschanged.aspx</a> 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.
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.

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 na pewno sie przyda.

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

A czy ktoś wie jak za pomocą PDA pociągnąć
plik z FTP i zapisać go na innym FTP [???]

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