2013-06-26 3 views
1

저는 인터넷에서 파일을 다운로드하기 위해 Net.WebClient를 현재 사용하고 있습니다. 이제 다른 일을하고 싶습니다. 나는다운로드하기 전에 파일 크기를 요청하십시오.

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

가 어떻게 그것을 다운로드하지 않고 링크의 파일 크기 매개 변수를 얻을 수있는이 하위 내부의 매개 변수 e.TotalBytesToReceive로 다운로드 시작 후에 만 ​​flie의 크기를 알 수 ?

+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

관련 문제