2013-08-12 5 views
3

vb.net에서 원격 파일 크기를 얻는 가장 좋은 방법은 무엇입니까? 최근에이 코드를 사용했습니다 :원격 파일 크기 받기

 Dim Request As System.Net.WebRequest 
     Dim Response As System.Net.WebResponse 
     Dim FileSize As Integer 
     Request = Net.WebRequest.Create("http://my-url.com/file.exe") 
     Request.Method = Net.WebRequestMethods.Http.Get 
     Response = Request.GetResponse 
     FileSize = Response.ContentLength 

유효하지 않은 파일 크기를 제공하기 때문에 얼마 동안 제대로 작동하지 않습니다.

퍼티는 말한다 : (유효) 1.240.214 바이트, vb.net의 WebRequest는 말한다 : 1.246.314 바이트 (무효!)

WebRequest 클래스 캐시의 어떤 종류를 사용하는 것 같습니다

... 가 있는가 원격 파일 크기를 얻는 더 좋은 방법은?

+0

웹 요청이 페이로드가 아닌 페이로드 크기에 대한 응답 헤더를 계산할 수 있습니까? –

답변

1

어떻게 이런 HEAD 요청하게 대해 : 당신에게 퍼티와 같은 결과를 제공

Dim req As System.Net.WebRequest = System.Net.HttpWebRequest.Create("http://my-url.com/file.exe") 
req.Method = "HEAD" 

Using resp As System.Net.WebResponse = req.GetResponse() 
    Dim ContentLength As Integer 

If Integer.TryParse(resp.Headers.[Get]("Content-Length"), ContentLength) Then 
    ' Use ContentLength variable here 
    End If 
End Using 

합니까를?

+0

'ContentLength'는 1.246.314 바이트를 반환하는데, 이는'WebRequest'와 같은 무효 크기를 의미합니다. 퍼티의'ls -l'은'1.240.214' 바이트를주고, 파일의 WinSCP 속성은'1.240.214' 바이트를 출력합니다 ... – Lucas

+0

둘 다에서 원시 데이터를 가져 와서 비교할 수 있습니까? 추측하려고 시도하는 대신 실제 차이점이 있습니까? –

+0

@GeorgeJohnston 추측은 없습니다! 하나의 파일의 차이점은 무엇입니까? 없음. 그것은 단지 로컬 퍼티와 원격 파일 크기에 달려 있습니다. 로컬 컴퓨터에서 파일에 대한 모든 요청은 유효한 파일 크기를 제공하고 원격 컴퓨터는 가짜 파일 크기를 제공합니다. – Lucas