ファイルがダウンロードされた回数と、誰がダウンロードしたかを追跡しようとしています。[名前を付けて保存] ダイアログ ボックスからクリック イベントを取得する方法がないため、ダウンロードがキャンセルされたか、ユーザーがダウンロードを選択したかをハンドラーが実際に認識できるかどうかを知りたいですか?
このリンクASP.NET ファイルのダウンロード - ユーザーがダウンロードをキャンセルしたかどうかを検出しますか? 仕事を終わらせるために別の確認ダイアログボックスを用意することを提案しましたが、これはユーザーフレンドリーな種類のアプローチではないかもしれないと思います.
ダウンロード ボタンを誤ってクリックする可能性を排除しているわけではないので、ダウンロード時間を増やすタイミングを知る方法が本当にあるかどうかを知りたいだけです。
アップデート:
いくつか読んだ後、私は今このコードを持っています。
int maxCount = (int)Math.Ceiling((file.Length - startBytes + 0.0) / 1024);
int i;
for (i = 0; i < maxCount && context.Response.IsClientConnected; i++)
{
context.Response.BinaryWrite(_BinaryReader.ReadBytes(1024));
context.Response.Flush();
}
if (i < maxCount)
{ }
else
{
//Update Increment
}
ユーザーが実際にダウンロードしない場合はインクリメントを更新しないように、キャンセルイベントを通知しようとしています。しかし、キャンセルを押したにもかかわらず、インクリメントがまだ更新されていることに気付きました。このダウンロードに含まれるファイルは小さく、約 100kb 以上です。
私の意見では、for ループはResponse.IsClientConnected
false になる前に既に実行されています。これを機能させるために何を変更できますか? どんなポインタでも大歓迎です。