2012-08-22 11 views
8

Pobieram pliki obrazów z Internetu za pomocą następującego kodu w mojej aplikacji konsolowej.Pobierz rozmiar pliku obrazu przed pobraniem z sieci

WebClient client = new WebClient(); 
client.DownloadFile(string address_of_image_file,string filename); 

Kod działa zupełnie bez zarzutu.

Chcę wiedzieć, czy istnieje sposób, w jaki można uzyskać rozmiar tego pliku obrazu przed jego pobraniem.

PS- Właściwie napisałem kod, aby zrobić robot, który porusza się po witrynie pobierając pliki obrazów. Więc nie znam jej wielkości wcześniej. Wszystko, co mam, to pełna ścieżka do pliku, który został wyodrębniony ze źródła strony.

+0

Możliwy duplikat [Get http: /.../ File Size] (http: // stackoverflow .com/questions/122853/get-http-file-size) – Francis

Odpowiedz

6

Jeśli serwis internetowy podaje nagłówek HTTP Content-Length, będzie to rozmiar pliku obrazu. Jeśli jednak usługa internetowa chce "przesłać" dane do ciebie (używając kodowania Chunk), nie będziesz wiedzieć, dopóki cały plik nie zostanie pobrany.

7

Oto prosty przykład można spróbować jeśli masz pliki o różnych rozszerzeniach takich jak .gif, .jpg, etc można utworzyć zmienną lub owinąć kod w instrukcji switch sprawie

System.Net.WebClient client = new System.Net.WebClient(); 
client.OpenRead("http://someURL.com/Images/MyImage.jpg"); 
Int64 bytes_total= Convert.ToInt64(client.ResponseHeaders["Content-Length"]) 
MessageBox.Show(bytes_total.ToString() + " Bytes"); 
+0

To działa jak urok dla mnie, ale po trzecim użyciu zatrzymuje wszystko i zawiesza się. Próbowałem nawet wywoływać client.Dispose(), ale to nie pomaga ... Czy masz pojęcie, dlaczego tak się dzieje? Dzięki! – Thpramos

+0

możesz pokazać nam ślad stosu awarii? – knocte

0

Powinieneś spojrzeć na tę odpowiedź: C# Get http:/…/File Size, gdzie twoje pytanie jest w pełni wyjaśnione. Korzysta z żądania HEAD HTTP do pobrania rozmiaru pliku, ale możesz także odczytać nagłówek "Content-Length" podczas żądania GET przed odczytaniem strumienia odpowiedzi.

+0

-1. Zrób komentarz lub dodaj podsumowanie linku do odpowiedzi. –

+0

Pytanie i odpowiedź w określonym łączu nie wymagają wyjaśnienia i trudno jest coś dodać. Nie chcę kopiować i wklejać odpowiedzi z oryginalnego wpisu. W każdym razie, dzięki za komentarz, wezmę to pod uwagę w przyszłości. – Perevalov

+0

Witamy w SO. Oczekuje się, że odpowiedzi SO będą zawierać podsumowanie linku - sprawdź [FAQ] (http://stackoverflow.com/questions/how-to-answer) - "Podaj kontekst dla linków". –

2

można użyć HttpWebRequest kwerendy metody szef pliku i sprawdzić Content-Length w odpowiedzi

Powiązane problemy