Jak ściągnać plik na dysk lokalny ?

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

Rejestracja: 17 lat temu

Ostatnio: 1 rok temu

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

Rejestracja: 14 lat temu

Ostatnio: 8 lat temu

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

Rejestracja: 15 lat temu

Ostatnio: 10 lat temu

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

Rejestracja: 17 lat temu

Ostatnio: 1 rok temu

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

Rejestracja: 14 lat temu

Ostatnio: 8 lat temu

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

Rejestracja: 17 lat temu

Ostatnio: 1 rok temu

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

Rejestracja: 14 lat temu

Ostatnio: 8 lat temu

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

Rejestracja: 17 lat temu

Ostatnio: 1 rok temu

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

Rejestracja: 14 lat temu

Ostatnio: 8 lat temu

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

Rejestracja: 17 lat temu

Ostatnio: 1 rok temu

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

Rejestracja: 14 lat temu

Ostatnio: 8 lat temu

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

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