アップロード処理に続いてダウンロード処理も作る事になりました。
まぁ最初に書いておくとstrutsの機能を特に使ってるという訳ではないです。
ダウンロードのやり方にはいくつかやり方はあると思いますが
今回はsourceforgeで採用している方式っぽくしてみました。
といってもsourceforge自体の仕組みを理解してる訳ではなく
なんとなくこんな感じかな〜ってやってみただけなのでかなり怪しいです。
sourceforgeで採用されている方式は
1.ダウンロードリンク(だったかな)をクリック
2.次のページが表示される
3.それと並行してファイルのダウンロードが行われる
という方式でこれの利点としてはダウンロード対象の確認時点でエラーが
あった場合でも次ページを表示する事は確実に行われるので
ダウンロード前に1クッション置ける点です。
具体的に考えた方式としては
1.ダウンロードボタンを押すと通常のActionをキック
2.そのActionではダウンロード対象のデータをForm(ほぼSessionと同意義)に
設定して元の画面を再表示
3.画面では再表示時に空のformを作って表示時に自動的に
ダウンロードActionにsubmitしちゃいます
4.ダウンロードActionでダウンロード処理
といった感じです。
3のsubmitでは空のformをsubmitするのでメインのformには
影響がないかな〜って思ってますが、ここは本当に勘です。
ただtokenとかもこれで整合性が保たれてるっぽいのでいけそうな気がします。
(ちなみにtoken周りはforwardとかもあるので妙な制御を入れてます)
今のところこの実装方式でうまくいけてそうな感じです。
怪しいですけどね('-';)
PR