ブログには必要無い機能ですが、ファイルのアップロードを解説したので、ついでにダウンロードについても解説しておきます。
ダウンロードでも、画像のように固定ファイルにリンクしてある場合は、ブラウザの標準機能でダウンロードできます。
従って、ここでは動的にファイルを作成したり、直接プログラムで生成したデータを送る場合になります。
「直接・・・」はピンとこないかもしれませんが、データベースに BLOB でデータが保存されている場合、
一度物理ファイルに書き出す必要は無く、直接 Stream として送れます。
一時ファイルの名前の生成や後始末といった余計な作業が不要です。
ファイルのアップロードに比べれば、Apache Commons のようなサポートライブラリが不要な分楽です。
ただ、仕組みは html プロトコルを理解していないと、ちょっと戸惑うかも知れません。
アップロード処理と同様に、ダウンロードも画面とアップロード処理を1つの JSP で行うのは難しいです。
何故なら、画面とダウンロードでは、http の通信方法が違うからです。(text/html と application/octet-stream等)
ですので、ダウンロード処理専用の JSP を作ったほうがスッキリします。
これも、JSPの「フォワード」を使います。
画面のあるJSP
↓ html
ブラウザからダウンロード指示(submit)
↓ post/get
画面のあるJSP(*1)
↓ forward
ダウンロード専用JSP
↓ application/octet-stream
ブラウザの機能で、ダウンロード画面が表示
forward は redirect と違いサーバー側の内部で行われるので、利用者からは全く分かりません。
(*1)では、必要ならファイルの作成や更新も行います。
ここを別のJSPにしても良いのですが、もしファイルの作成や更新に失敗した場合、ダウンロードJSPに forward しないで、画面でエラーを表示することが出来ます。
| « 前頁 | 次頁 » |