- PR -

ファイルダウンロードの戻り値

1
投稿者投稿内容
がつん
ベテラン
会議室デビュー日: 2003/07/07
投稿数: 62
お住まい・勤務地: Sydney
投稿日時: 2003-07-07 15:13
こんにちは、いつもお世話になっております。
現在、.netにてファイルをダウンロードしている処理を製造しております。
'-----------------------------------------------------------------
Response.ContentType = "application/vnd.ms-excel"
'送信するファイルを指定
Dim str As String = Request.QueryString("file")
Dim FileNM, wStr() As String
wStr = Split(str, "\")
FileNM = wStr(UBound(wStr))
Response.AppendHeader("Content-Disposition", "attachment;filename =" & HttpUtility.UrlEncode(FileNM) & "")
'Excel送信
Response.WriteFile(str)
'-----------------------------------------------------------------
上記のコードにてダウンロードダイアログを表示し、ユーザに処理を
選択させる訳なのですが、どうしてもファイルを保存したか、キャンセルしたか
の戻り値のようなものを取得する方法がわかりません。

発想の転換も試みましたが、解決の糸口は未だ見えないまま投稿させていただきました。
どうかヒント等なんでも結構ですのでご教授いただけませんでしょうか。
makura
ベテラン
会議室デビュー日: 2002/11/27
投稿数: 90
投稿日時: 2003-07-07 16:17
こんにちは、makuraです。

残念ながら、ブラウザにはファイルをダウンロードしたのかキャンセルしたのかをサーバに通知する機能がありません。
ではどうやってダウンロードorキャンセルの処理を行っているかというと、極めて原始的なのですが、
1.ブラウザはサーバにファイルを要求する。
2.サーバはブラウザに対してファイルの送信を開始する。ブラウザは応答ヘッダを見て、それがブラウザに表示すべきデータではなくダウンロードすべきデータだということを判断する。
3.ブラウザはダウンロードダイアログを表示しつつ、裏では勝手にダウンロード処理を始める。
4.ユーザーがダウンロードを選択したら、ブラウザはそのままダウンロードを継続、キャンセルを選択したら、それまでにダウンロードしたデータを破棄する。
という流れになっています。つまり、ユーザーがダウンロードを選ぼうがキャンセルしようが、実際にはダウンロード処理が行われるのです。ダウンロード処理が裏で勝手に進んでいるため、すべてダウンロード完了した後にキャンセルされることもあります

私は以前楽曲配信システムの動作テストを受け持ったことがありますが、そのシステムでは、ブラウザではなく専用のアプリケーションを開発して、
1.アプリケーションはサーバに対して楽曲ファイルを要求
2.サーバはアプリケーションに対して楽曲ファイルを送信
3.アプリケーションは既定の場所に楽曲ファイルをダウンロード
4.アプリケーションはダウンロードした楽曲ファイルの整合性をチェックして、異常がなければサーバに対して完了メッセージを送信
5.サーバは完了メッセージを受け取り、課金処理を行う。
という仕組みになっていました。
1

スキルアップ/キャリアアップ(JOB@IT)