2013-06-26 8 views
1

В настоящее время я использую Net.WebClient для загрузки файла из Интернета. Теперь я хотел бы сделать еще одну вещь. я могу знать размер 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), где запрос для файла прямо заявляя только о ГОЛОВЕ. – 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 МБ и файлов 400 МБ – user1714647

Смежные вопросы