- - PR -
Servletで作ったCSVをダウンロードする。
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2009-01-14 18:14
クライアント:OS=Windows2000/XP, ブラウザ:IE6/IE7, Excelあり
サーバ:Java6, Tomcat + JSF の環境で開発しています。 リンクをクリックすると動的にされたCSVをダウンロードしてExcelで表示する部分があるのですが、いくつかの環境だけブラウザの挙動がおかしく困っています。 通常だと「CSVをダウンロード」のリンクをクリックすると「ファイルのダウンロード」のダイアログが出て、ダイアログ上の3つのボタン「開く」、「保存」、「キャンセル」のうち「開く」を押すとExcelが起動してCSVの内容が表示されます。 このときのファイル名は「datasheet.csv」となっています。 問題環境だけは後述のように、ファイルのダウンロードダイアログが2度開くのです。 @同じリンクをクリック。ファイルのダウンロードダイアログが開く ファイル名が「"displayResource?graphCsvDlId=23634"」となっている A「開く」を押すともう一度ファイルのダウンロードダイアログが開く。 2つめのダイアログではファイル名が「datasheet.csv」となっている。 B2番目のダイアログに対して「開く」を押すと、Excelが起動しCSVが表示される。 どなたか原因などご存知でしたら教えていただけますでしょうか? [Htmlのソース] <td><a href="displayResource?graphCsvDlId=23634">CSVをダウンロード</a></td> [Servletが返すHTMLヘッダ] ContentType: application/x-csv; charset=Windows-31J Content-Disposition: attachment; filename = datasheet.csv | ||||
|
投稿日時: 2009-01-14 18:50
問題の起きる起きない各端末のOS、IEのバージョンを並べると
共通点が見つかったはずです。 参考URL http://support.microsoft.com/default.aspx?scid=kb;ja;238588 結論を言ってしまうと ・GETで要求する ・URLに拡張子を含むファイル名を含める(QueryStringでも可) ・DispositionはATTACHMENT これで勝てます。 | ||||
|
投稿日時: 2009-01-14 20:32
Application/ms-excel-csv
↑MIMEつかってみたら? | ||||
|
投稿日時: 2009-01-15 09:28
IEのバージョンが限定されていればそれでいいのですが 複数のバージョンのIEを対照と刷る場合 IEの動作上の不具合のため ContentTypeだけでは対処できませんので 注意が必要です。 | ||||
|
投稿日時: 2009-01-15 21:58
ブラウザの挙動は基本的にContents-Typeからですよ。
x-csv が該当のOSにマッピングされてなく発生しているきがしますが。 ms-excel-csvの場合、Excelをインストールした場合必ずマッピングされていたとおもいますが? | ||||
|
投稿日時: 2009-01-16 14:03
あすか様、汀様、情報頂きありがとうございました。
結果、KB238588に該当するようでブラウザにSPを適用したところ問題なく動作するようになりました。 SPはIE、OSのどちらのものでもOKでした。 原因がわからず非常に困っていたところだったので本当に助かりました。 |
1