- - PR -
Content-Dispositionを使わないファイルのダウンロード
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-01-04 17:26
Content-Dispositionのヘッダーを使わないでサーバにあるCSVファイルをクライアントにダウンロードダイアログを出してダウンロードさせる方法はありますか?
サーバはWebLogic8.1、ブラウザはIE6です。 「Content-Disposition」をファイアウォールのデフォルトの設定でははじくようになっていて、これを外すとセキュリティが甘くなるので外したくないと言われ、他の方法を探しています。 どうしてもContent-Dispositionが必要であれば、必要な理由等をそろえて説得しなければならないのです… | ||||
|
投稿日時: 2005-01-04 17:46
*.csv って URL でダウンロード用のサーブレットをマッピングするのはいかがでしょうか?
| ||||
|
投稿日時: 2005-01-04 18:18
すみません、具体的なやり方のヒントをもらうことはできないでしょうか? ダウンロード用のサーブレットではヘッダーをどのようにセットするとか… ダウンロードダイアログを出したり、ファイル名をセットするにはContent-Dispositionが必要といういうことになりませんか? | ||||
|
投稿日時: 2005-01-05 00:16
*.csvにマッピングを行えば、
ブラウザが静的なCSVファイルに対して アクセスするのと同じことになります。 | ||||
|
投稿日時: 2005-01-05 02:32
まずは手を動かしてみましょう!
web.xml はこんな形になるでしょうか。とりあえずこれでファイル名については問題ないかと。
Content-Disposition ヘッダがダイアログ表示非表示にどう影響をあたえるかは存じないのですが、ダウンロードダイアログが表示されるかどうかはブラウザ依存(?)ではないでしょうか。content-type によってそのままブラウザで表示されたりダウンロードを促すダイアログがでたりしますね。いろいろ試してみてください。 | ||||
|
投稿日時: 2005-01-05 10:11
お返事ありがとうございます。
インギさんが書かれたweb.xmlの記述なども試してみましたが、理解できませんです。すみません。根本的にわかってないようです。 web.xmlに記述を追加してブラウザのURL欄にhttp://localhost:8080/xxx/hoge.csvと入れてyourpackage.CSVServletが起動はしましたが、このサーブレットにダウンロードの記述を書くということでしょうか?ダウンロードの記述とは
といった感じになると認識していますが、多分見当違いだとは思うのですが、他の方法が思いつかない状況です。 書き漏れていましたが、 ・CSVファイルの名称や内容は動的に変更あり ・ブラウザはIE6固定(とほほなwebシステムです) となっております。 | ||||
|
投稿日時: 2005-01-05 10:40
小出しでわかりにくくてごめんなさい。
http://localhost:8080/xxx/hoge.csv とリクエストしているので Content-Disposition を使わなくても別途ファイル名を指定しなくてもいいかも? と思いました。 setHeader("Content-Disposition"... の箇所をコメントアウトしたらどうでしょう。 [ メッセージ編集済み 編集者: インギ 編集日時 2005-01-05 10:41 ] | ||||
|
投稿日時: 2005-01-05 13:31
いえ、こちらこそすみません。基礎から勉強しなおさなきゃだめですね…
おかげさまでやりたい事の9割はできました。本当にありがとうございます。 「setHeader("Content-Disposition"... の箇所をコメントアウト」で、 hoge.csvという名前でダウンロードできました。 残りの1割というのは書き漏れていましたが、strutsを使っているシステムだったので hoge.doとURLに書くところを、hoge.csvにすると、下記のようにweb.xmlに追記すればできるんですが、本当はCSVのファイル名にユーザIDをつけて"hoge012345.csv"のような感じにしたかったんですが、strutsだとそれは無理かと思い諦めています。 <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.csv</url-pattern> </servlet-mapping> #あと、ここの過去の投稿にあったように setContentType("Application/Octet-Stream") とすると、FireFox等ではダウンロードダイアログがでましたが ↓ setContentType("Application/Octet-Stream-Dummy") としないと、IEではでませんでした。 |