C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: DL中の総バイト数が取得できない


(過去ログ 67 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■39311 / inTopicNo.1)  DL中の総バイト数が取得できない
  
□投稿者/ intbp (1回)-(2009/08/05(Wed) 10:08:51)

分類:[.NET 全般] 

System.Net.DownloadProgressChangedEventArgsの
TotalBytesToReceive、BytesReceivedを使用して、
○○バイト中、○○バイトダウンロードしています。
といった表示をリアルタイムに表示するダウンロード機能を作っています。

ただ、ひとつ問題ありまして
サイトによっては進行途中の総バイト数が常時-1になり
ダウンロード完了後に正しい総バイト数が取得できる状態です
試した限り-1になるサイトでは100%発生しているのですが
これはサーバー側で何か設定を行っているのでしょうか?

開発環境はVB2008を使っています。
引用返信 編集キー/
■39313 / inTopicNo.2)  Re[1]: DL中の総バイト数が取得できない
□投稿者/ 魔界の仮面弁士 (1179回)-(2009/08/05(Wed) 10:27:02)
No39311 (intbp さん) に返信
> サイトによっては進行途中の総バイト数が常時-1になり
> ダウンロード完了後に正しい総バイト数が取得できる状態です

HTTP の応答ヘッダには、「Content-Length」という、
応答ボディ部の総バイト数を通知する情報があります。

これにより、総バイト数を把握する事が出来るのですが、
サーバー側から、Content-Length が通知されていなかった場合、
そのプロパティは -1 を返します。


> これはサーバー側で何か設定を行っているのでしょうか?
そういう場合もありますが、そもそも動的に生成されるコンテンツなどでは、
事前に「総バイト数」を把握できないケースもあります。

データを作り終わった後であれば、総バイト数を把握する事もできますが、
それでは時間がかかるので、生成できた部分から順次送信していくような
設定になっている場合、Content-Length 無しで送信されます。
引用返信 編集キー/
■39314 / inTopicNo.3)  Re[1]: DL中の総バイト数が取得できない
□投稿者/ Hongliang (443回)-(2009/08/05(Wed) 10:27:40)
HTTP のレスポンスヘッダ Content-Length がファイルサイズなんですが、このヘッダを付けるかどうかはサーバ次第ですね。
引用返信 編集キー/
■39329 / inTopicNo.4)  Re[2]: DL中の総バイト数が取得できない
□投稿者/ intbp (3回)-(2009/08/05(Wed) 14:08:00)
2009/08/05(Wed) 14:13:55 編集(投稿者)

魔界の仮面弁士さん、Hongliangさん
返信ありがとうございます。

総バイト数はContent-Lengthから取得しているとの事で、
サーバー側で付与されていなければわからないのですね。

そうなると、保存したファイルが正しくダウンロード出来たかは、
実際にファイルを確認しないとわからないのでしょうか?
(MD5やCRCを除いて、少なくともファイルサイズでの判断)

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -