15

コンソール アプリケーションで次のコードを使用して、Web から画像ファイルをダウンロードしています。

WebClient client = new WebClient();
client.DownloadFile(string address_of_image_file,string filename);

コードは完全に正常に実行されています。

ダウンロードする前に、この画像ファイルのサイズを取得する方法があるかどうかを知りたいです。

PS- 実際に、サイト内を移動して画像ファイルをダウンロードするクローラーを作成するコードを作成しました。そのため、事前にサイズがわかりません。私が持っているのは、Web ページのソースから抽出されたファイルの完全なパスだけです。

4

5 に答える 5

23

.GIF、.JPG などのさまざまな拡張子のファイルがある場合に試すことができる簡単な例を次に示します。変数を作成したり、Switch Case ステートメント内にコードをラップしたりできます。

System.Net.WebClient client = new System.Net.WebClient();
client.OpenRead("http://someURL.com/Images/MyImage.jpg");
Int64 bytes_total= Convert.ToInt64(client.ResponseHeaders["Content-Length"])
MessageBox.Show(bytes_total.ToString() + " Bytes");
于 2012-08-22T19:11:54.353 に答える
6

Web サービスがContent-Length HTTP ヘッダーを提供する場合、それは画像ファイルのサイズになります。ただし、Web サービスが (チャンク エンコーディングを使用して) データを "ストリーミング" したい場合は、ファイル全体がダウンロードされるまでわかりません。

于 2012-08-22T19:11:43.603 に答える
2

HttpWebRequest を使用して、ファイルの HEAD メソッドを照会し、応答で Content-Length を確認できます。

于 2012-08-22T19:12:30.067 に答える
0

この回答を見る必要があります: C# Get http://…/File Size where your question is fully Explained. ファイルサイズを取得するために HEAD HTTP リクエストを使用していますが、応答ストリームを読み取る前に GET リクエスト中に「Content-Length」ヘッダーを読み取ることもできます。

于 2012-08-22T19:11:58.630 に答える