2009-07-24 9 views
0

2つのファイルへのリンクがあります。それらは同じファイルかもしれませんが、同じURLではないかもしれません。私は完全なダウンロードを行う前にコンテンツの長さをチェックすることによって、彼らが同じかどうかを知りたい。これを行う最善の方法は何ですか?.NETでヘッダー/ファイルサイズを取得する

現在、webbrowserコントロールを使用してページを読み込んでデータを抽出し、WebClient.Downloadを使用してファイルを取得しています。 WebClientを使用してファイル全体をダウンロードする前にファイルサイズを確認する方法はありますか?

+0

デュープ:http://stackoverflow.com/questions/357190/asp-net-c -detect-file-from-other-server –

答えて

4

私は私のために非常によく動作方法を提供し、優れ記事、Get file length over HTTP before you download it、実測値:

static public long GetFileSize(string url) 
    { 
     using (WebClient obj = new WebClient()) 
     using (Stream s = obj.OpenRead(url)) 
      return long.Parse(obj.ResponseHeaders["Content-Length"].ToString()); 
    } 
3

同じ長さであっても、ファイルが同一であるとは限りません。ただし、これが平等を宣言するのに十分であると確信できる場合は、MethodHEADに設定してHttpWebRequestを発行することができます。content-lengthを含むファイルヘッダーのみをダウンロードします。

+0

コンテンツ長ヘッダーが設定され、Webサーバーによって異なる可能性があり、ダウンロードにサーバーサイドコードが含まれていることを前提としています。 – RobV

+0

HEADリクエストが処理されるようにサポートされています。普通のものと同じですが、体を捨てるようにしています...しかし、そうですが、いくつかのシステムはおそらく怠惰です。 –

関連する問題