2013-09-16 3 views
5

Potrzebujemy:Sprawdź, czy adres URL prowadzi do pliku lub strony.

Pobierz plik z adresu URL, jeśli rzeczywiście jest plikiem. W przeciwnym razie, jeśli strona nic nie robi.

Na szybki przykład mam następujące, aby pobrać plik:

My.Computer.Network.DownloadFile(
"http://www.wired.com/wiredenterprise/wp-content/uploads/2013/07/ff_googleinfrastructure_large.jpg", 
"d:\ff_googleinfrastructure_large.jpg") 

Ale jeśli mamy normalną stronę internetową, na przykład „http://www.google.com” to po prostu pobrać stronę, która jest coś, co robimy nie chcę.

Jak mogę się dowiedzieć, czy URL prowadzi do pliku zamiast do strony?

Może to być dowolny typ pliku, więc sprawdź, czy adres URL kończy się na .zip lub .jpg lub .docx lub ... po prostu nie zrobi.

Odpowiedzi w VB.NET lub C# są mile widziane, dlatego oba zostały zaznaczone.

+3

Strona to inny typ pliku. Jakie dokładnie są twoje kryteria? Czy chcesz zignorować wszystkie pliki tekstowe, czy też dowolną stronę zawierającą HTML lub coś innego? A co z plikiem '.css', na przykład? Lub '.jpg', który jest częścią strony? Ostatecznie podejrzewam, że szukasz czegoś związanego z MIMEType, ale tak naprawdę nie dajesz wyraźnych wymagań. –

+0

Niestety nie wszystko było jasne, wszystko, czego naprawdę potrzebowałem, to dowiedzieć się, czy jest to strona html lub inny typ pliku, a następnie przystąpić do pobrania pliku, jeśli nie jest to plik HTML. –

Odpowiedz

9

Przed czasem nie ma w 100% dokładnego sposobu. Możesz sprawdzić rozszerzenie (zakładając, że istnieje), ale nawet to nie jest w 100% niezawodne.

Możesz przesłać żądanie i sprawdzić nagłówek content-type i poręczenie pobierania pliku, jeśli jest to text/html lub jakiś wariant MIME z text. Jak wskazuje olydis poniżej, możesz wykonać żądanie HEAD, aby otrzymać nagłówek odpowiedzi i zdecydować, czy chcesz pobrać plik w całości w tym momencie.

+2

lub, jeśli jest to zgodne z twoimi celami, zrób tylko żądanie "HEAD", aby dowiedzieć się MIME, jak opisano w tym wpisie: http://stackoverflow.com/questions/14030245/c-sharp-get-content-type-of -a-odpowiedź-bez-ładowania-cała treść – olydis

+0

Dziękuję za to, co było mi potrzebne! Przyjmuję twoją odpowiedź, kiedy tylko mogę. –