- - PR -
サーブレットでファイルのダウンロード
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2002-04-10 12:04
Javaサーブレットでファイルをダウンロードさせようとしているのですが、ちょっと困ったことが起きています。
拡張子が、DTDのファイルをダウンロードさせようとしているのですが、IEの場合ファイル名に勝手に".xml"が追加されてしまいます。 例えば、以下のような単純に静的なページでも同様のことが起きます。 http://hogehoge/tmp/test1.dtd のリンクを「対象をファイルに保存」で保存させると、ファイルの種類が勝手に「XML Document」となってしまい(ファイルの関連付けも消しているので、クライアントでXMLだと認識させる情報は何もないはずなのに…)、ファイル名が「test1.dtd.xml」となってしまいます。 また、ファイルの種類を「全てのファイル」にすると、なぜかファイル名が「test1.dtd..xml」になってしまっています。(なぜか"."が2つ付く) Internet Explorer 5.5SP2 で試しています。 (ちなみに Netscape 4.78 では、上記の現象は起きません。) なぜ、こういうことになってしまうのでしょうか? クライアントに返すHTTPヘッダの Content-type を application/octet-stream application/xml-dtd と変えてみたのですが、同じでした。 サーブレットおよび アプリケーションサーバ(Tomcat3.3 と INTERSTAGEで試しています) の設定等で逃げる方法はないのでしょうか? あと、ついでにといっては何なのですが、ファイルのダウンロードのダイアログで、「このファイルを上記の場所から開く」を選択不可にして、「このファイルをディスクに保存する」だけ選択させるようにはできないでしょうか? (時々、インターネット上でそうなっているのを見かけるのですが、どうやっているのでしょうか?違いがよく分かりませんでした。) [ メッセージ編集済み 編集者: ふうた 編集日時 2002-04-10 12:14 ] |
|
投稿日時: 2002-04-10 15:25
DTD ファイルの先頭行にある
<?xml version="1.0" encoding="UTF-8"?> を消すと、状況が変わるようです。 (IEはこの宣言を見て判断しているようです。) この宣言は必須ではないので、消してみました。 (文字コードは、UTF-8で書いていますし…) ただ、これだけだと、.xml が .txt になるだけなので、クライアントに返す Content-Type を aplication/xml-dtd とすると、ファイルの種類が 「.dtdドキュメント」になって、拡張子がDTDで保存できました。 逆にネットスケープの場合に、保存する時に「未定義のファイルタイプです」というダイアログが出てしまいます。ただ、ここでファイルに保存を選べば、ファイル名も問題なく保存できるので、注意書きレベルで対応できると思います。 それにしても、IEは親切心でやってくれているのかもしれないけど、かなりお節介ですねぇ・・・(ファイルの中身まで見て、拡張子を決めるなんて・・・) |
|
投稿日時: 2002-04-11 09:05
私も以前にServlet/JSPからCSVファイルをダウンロードさせる
Webアプリを開発したのですが、同様のIEのありがたいおせっかいに よって意図しない動作が発生しました。 具体的には、クライアントによって 1.ダウンロードダイアログが開く(正常にダウンロード可能) 2.ダウンロードダイアログが開かずに勝手にExcelで表示。 の2パターンの現象が発生しました。 そこでExcelで開かないようにCSVファイルとExcelの関連付けを 削除したのですが、今度はベタのテキストとして表示するようになって しまって・・・困りました。 要はダウンロードダイアログが開いてくれればいいのですが、 一回でもダウンロードダイアログで □今後、このファイルに関してはダイアログを表示しない (↑詳細な文言は忘れました(^^;) をチェックしてしまうと、そのクライアント(IE)では2度とダウンロード ダイアログを開く事ができなくなってしまいます。 そこで、便乗して質問なのですが、IEで上記現象が発生した場合、 再度ダウンロードダイアログを開くように戻す事はできないのでしょうか? 色々なIEのオプション等を見てみたのですが、それらしきが見つかり ませんでした・・・ご存知の方がいらっしゃいましたらご教授下さい。 |
|
投稿日時: 2002-04-11 09:48
Deeです
以前クライアントに書いた設定書より抜粋しますと:) Windows2000だと エクスプローラの[ツール]-[フォルダオプション]-[ファイルタイプ]で[DOC Microsoft Word文書]等を選択し、[詳細設定]ボタンを押します。 Windows9xだと エクスプローラの[表示]-[フォルダオプション]-[ファイルの種類]で[DOC Microsoft Word文書]等を選択し、[編集]ボタンを押します。 [ダウンロード後に開く確認をする]をオンにすればダウンロードダイアログを再び表示させることができます。 ちなみに、同じ画面で[同じウィンドウで開く]をオフにすると、ブラウザ内のインプレース表示(ブラウザウィンドウ内でWordやExcelが動作する)が無効になり、外部のウィンドウで開くようになります。 [ メッセージ編集済み 編集者: Dee 編集日時 2002-04-11 09:48 ] |
|
投稿日時: 2002-04-11 13:07
>>Deeさん
ご回答ありがとうございます。 「ダウンロード後に開く確認をする」だったとは・・・盲点でした。 # 一般ユーザならともかく、開発者の端くれとして恥ずかしい・・・ 「同じウィンドウで開く」もそう言う意味だったんですね、納得です。 ありがとうございました。 |
1
