を返すコントローラー アクション メソッドがあるとしますFileResult
。ファイルが実際にクライアントに完全にダウンロードされたかどうかを検出することは可能ですか?
public ActionResult GetFile(int id)
{
DownloadInfo data = provider.GetInfo(id);
this.provider.MarkDownloadStart(id);
return File(Server.MapPath(data.Filename), "application/pdf");
}
アクションが呼び出されたときに情報を保存しますが、それは誰かがダウンロードを開始したことを意味するだけです。ダウンロードが完了したかどうか、サーバーに関する情報はありません...
また、コンテンツ処理ヘッダーを設定して、ファイルがブラウザーで直接開かれることはないと思われますが、ブラウザーはファイルを開く/保存するように求めます。これにより、クライアントがファイルを保存しやすくなります...
私の考え
ダウンロードが実際に行われたことを直接検出することはできないと思います。しかし、どういうわけか他の方法でそれを行うことは可能ですか:
- ビューをロードする
- それを持って
iframe
います - ファイルを要求し、
- メインビューは、クライアントにアクセスできるため、クライアントでのダウンロードを監視
iframe
し、ファイルのダウンロードが完了したかどうかを確認します。
上のシナリオは実行可能に見えるかもしれませんが、実際にこの監視を行う方法がわかりません。たぶん、このタスクを実行するための他の - より良い - 方法があります。
主な質問は
クライアントがファイルのダウンロードを完全に終了し、ダウンロードの合間にキャンセルしていないことをサーバー上で検出することは可能ですか?