2013-09-16 23 views
5

我們需要以下條件:檢查網址指向的文件或頁面

下載一個從URL文件,如果它實際上是一個文件。否則,如果它的頁面什麼都不做。

對於一個簡單的例子,我有下載文件的情況如下:

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

但是,如果我們得到了例如正常的網頁「http://www.google.com」將剛纔下載的頁面這是我們做的事不想。

那麼如何找出URL是否會導致文件而不是頁面?

它可能是任何類型的文件,以檢查URL是否以.zip或.jpg或.docx或...結尾根本不會。

在VB.NET或C#中的答案都歡迎這就是爲什麼我標記兩個。

+3

頁面是另一種類型的文件。你的標準究竟是什麼?你想忽略所有的文本文件,或只是包含HTML的任何頁面,或不同的東西?例如'.css'文件呢?或者作爲頁面一部分的'.jpg'?最終,我懷疑你正在尋找MIMEType相關的東西,但你並沒有給出明確的要求。 –

+0

對不起,我並不清楚,我真正需要的是找出它的HTML頁面或其他類型的文件,然後繼續下載文件,如果它不是一個HTML文件。 –

回答

9

提前,沒有100%準確的方法。你可以檢查擴展(假設有一個),但即使這不是100%的萬無一失。

如果值爲text/html或某個text MIME變體,您可以提出請求並檢查content-type標題並退出下載文件。正如olydis指出的那樣,您可以執行一個HEAD請求來獲取響應頭,然後決定是否要在該位置下載完整的文件。

+2

,或者,如果它適合您的目的,只需發出一個'HEAD'請求來找出這個帖子中描述的MIME:http://stackoverflow.com/questions/14030245/c-sharp-get-content-type-of -a-response-without-loading-entire-content – olydis

+0

感謝這就是我需要的!我會盡我所能接受你的答案。 –