Webを制作しているのですが、ユーザに任意のファイルをダウンロードさせたいと考えています。その際、ユーザがダウンロードを完了したことをサーバ側で検知する方法を探しています。
・ユーザがダウンロードを完了したか否か
・ユーザがダウンロードしたファイルサイズが適正かどうか
できれば両方知りたいのですが、前者まででもよいです。
よろしくお願い致します。
『ダウンロード』というクライアント側の動作判定はできないと思いますが、
サーバー側からユーザーのブラウザへ『ファイルを送信完了したか』およびその『送信サイズ』なら
といった方法で可能ではないかと思います。
http というプロトコルの仕様上,技術的に,両方とも不可能です.
サーバがデータを送り出したと思っても,通信のトラブルできちんとダウンロードできてないこともあるからです.
ダウンロードを開始したことは検出可能です.
上記の制約から,きちんとファイルがダウンロードできたかどうかを確認するために,ファイルとは別に,ファイルから得られるハッシュ(MD5,SHA1,CRCなど)の情報も載せておき,ユーザがダウンロード後にハッシュを計算し,ダウンロードが問題なかったかどうかを確認する場合もあります.
そうですよね。不可能なことが確認できました。ありがとうございました。
パケット解析を用いてユーザからACKが帰ってくるのを確認すれば、少なくとも、
・ユーザがダウンロードを完了したか否か
は分かると思います。(そこまでしなくてもサーバにログが残ると思いますが・・・)
・ユーザがダウンロードしたファイルサイズが適正かどうか
これは難儀ですね。「適正」とはどういう意味で「適正」なのでしょうか?
具体的な目標を数値にして検討してみるといいかもしれません。
ありがとうございました。Webアプリケーション層で該当ACKの検出をするのはどうすればよいのかわかりません(T^T)が、どちらにしても、Webアプリレベルで実現できないということが確認できたと思うので、それでよしとします。ありがとうございました。
なるほど、興味深いです。Ajaxを使ったことないので実験してみます。ありがとうございました。