2012-08-22 131 views
8

我在我的控制檯應用程序中使用以下代碼從Web下載圖像文件。從網絡下載圖像文件之前獲取圖像文件的大小

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

該代碼運行非常好。

我想知道在我下載它之前是否有辦法獲得這個圖像文件的大小。

PS-其實我已經編寫了一個代碼來製作一個爬行器,它可以在網站上下載圖片文件。所以我事先不知道它的大小。我所擁有的是從網頁源文件中提取的文件的完整路徑。

+0

[GET HTTP:/.../文件大小]的可能的複製(HTTP://計算器.com/questions/122853/get-http-file-size) – Francis

回答

6

如果網絡服務爲您提供了Content-Length HTTP標頭,那麼它將是圖像文件大小。但是,如果Web服務想要將數據「流式傳輸」給您(使用塊編碼),那麼在整個文件被下載之前您將不知道。

7

下面是一個簡單的例子,你可以嘗試 如果你有一個像.gif,.jpg和等擴展名不同的文件 您可以創建一個變量或開關罩聲明

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

這對我來說就像是一種魅力,但在第三次使用後,它會停止一切和崩潰。我甚至嘗試調用client.Dispose(),但它沒有幫助...你知道爲什麼會發生這種情況嗎?謝謝! – Thpramos

+0

你能告訴我們墜毀的堆棧軌跡嗎? – knocte

0

內包裝代碼你應該看看這個答案:C# Get http:/…/File Size你的問題已經完全解釋了。它使用HEAD HTTP請求來檢索文件大小,但在讀取響應流之前,您還可以在GET請求期間讀取「Content-Length」標題。

+0

-1。要麼發表評論,要麼將答案的摘要添加到答案中。 –

+0

指定鏈接中的問題和回答無需解釋,添加內容很困難。我不想複製原貼的答案。無論如何,感謝評論,我會在將來考慮它。 – Perevalov

+0

歡迎來到SO。所以答案應包含鏈接摘要 - [FAQ](http://stackoverflow.com/questions/how-to-answer) - 「爲鏈接提供上下文」。 –

2

您可以使用的HttpWebRequest查詢文件的HEAD方法和檢查內容長度在響應

相關問題