Webページ上でのファイルのダウンロードについて質問です。


Webを制作しているのですが、ユーザに任意のファイルをダウンロードさせたいと考えています。その際、ユーザがダウンロードを完了したことをサーバ側で検知する方法を探しています。

・ユーザがダウンロードを完了したか否か
・ユーザがダウンロードしたファイルサイズが適正かどうか

できれば両方知りたいのですが、前者まででもよいです。
よろしくお願い致します。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/11/22 09:50:25
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:ultraist No.1

回答回数6ベストアンサー獲得回数0

ポイント27pt

『ダウンロード』というクライアント側の動作判定はできないと思いますが、

サーバー側からユーザーのブラウザへ『ファイルを送信完了したか』およびその『送信サイズ』なら

  • サーバー側はファイルを読み込んで出力するアプリケーションを介してファイルをダウンロードさせる構成にする
  • ファイルダウンロード用のアプリケーションはユーザーIDとファイルの送信状態をDBに保存しつつユーザーにファイルを送信する
  • クライアント側ではAjaxでサーバー側のファイル送信状態の確認を定期的に行う
  • ファイル送信完了を検出したら、送信完了の知らせをサーバー側へ送信する

といった方法で可能ではないかと思います。

id:okenji

なるほど、興味深いです。Ajaxを使ったことないので実験してみます。ありがとうございました。

2008/11/22 09:47:36
id:goodvn No.2

回答回数228ベストアンサー獲得回数18

ポイント27pt

http というプロトコルの仕様上,技術的に,両方とも不可能です.

サーバがデータを送り出したと思っても,通信のトラブルできちんとダウンロードできてないこともあるからです.

ダウンロードを開始したことは検出可能です.

上記の制約から,きちんとファイルがダウンロードできたかどうかを確認するために,ファイルとは別に,ファイルから得られるハッシュ(MD5,SHA1,CRCなど)の情報も載せておき,ユーザがダウンロード後にハッシュを計算し,ダウンロードが問題なかったかどうかを確認する場合もあります.

id:okenji

そうですよね。不可能なことが確認できました。ありがとうございました。

2008/11/22 09:41:44
id:God_24 No.3

回答回数4ベストアンサー獲得回数0

ポイント26pt

パケット解析を用いてユーザからACKが帰ってくるのを確認すれば、少なくとも、

・ユーザがダウンロードを完了したか否か

は分かると思います。(そこまでしなくてもサーバにログが残ると思いますが・・・)

・ユーザがダウンロードしたファイルサイズが適正かどうか

これは難儀ですね。「適正」とはどういう意味で「適正」なのでしょうか?

具体的な目標を数値にして検討してみるといいかもしれません。

id:okenji

ありがとうございました。Webアプリケーション層で該当ACKの検出をするのはどうすればよいのかわかりません(T^T)が、どちらにしても、Webアプリレベルで実現できないということが確認できたと思うので、それでよしとします。ありがとうございました。

2008/11/22 09:49:39

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

  • ダウンロードをしたことを検知する方法 はてなの質問ピックアップ 2008-11-20 17:55:12
    Webページ上でのファイルのダウンロードについて質問です。 Webを制作しているのですが、ユーザに任意のファイルをダウンロードさせたいと考えています。その際、ユーザがダウンロー
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません