2013-06-26 154 views
1

我目前正在使用Net.WebClient從Internet上下載文件。現在,我想再做一件事。 我可以知道flie尺寸僅爲後,我開始與參數e.TotalBytesToReceive下載此子下載前請求文件大小

Private Sub W_DownloadProgressChanged(ByVal sender As Object, ByVal e As _ 
    Net.DownloadProgressChangedEventArgs) Handles W.DownloadProgressChanged 

我怎樣才能得到一個鏈接的文件的大小參數,無需下載它裏面?

+0

正確的溶液[此](http://stackoverflow.com/questions/122853/get-http-file-size),其中對於文件的請求是明確地要求HEAD。 – Alexander

回答

2

使用WebClient ResponseHeaders

Public Shared Function GetFileSize(url As String) As Long 
    Using obj As New WebClient() 
     Using s As Stream = obj.OpenRead(url) 
      Return Long.Parse(obj.ResponseHeaders("Content-Length").ToString()) 
     End Using 
    End Using 
End Function 
+0

這有點慢但是可以工作 – user1714647

+0

這很慢,因爲我非常有信心OpenRead完全下載文件,然後爲您提供流。你可以測試一個大文件(我不能從這裏),只是爲了確保? – Alexander

+0

我懷疑它會下載整個文件來獲得它的大小。對於1,2 MB的文件和400> MB的文件,獲得重量的時間是相同的 – user1714647