- - PR -
ファイルのダウンロードダイアログが2度表示される。
1|2|3
次のページへ»
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2003-08-04 16:37
いつも拝見させて頂いており、お世話になっています。
さて、困った事象が発生していて、お知恵をお借りしたく、投稿させて頂きます。 サーブレットで CSV データを作成し、直接データをダウンロードさせたいのですが、 IE6.0 SP1では(その他ブラウザでは確認していませんが)、 ファイルのダウンロードダイアログで”開く”を選択すると、同じダイアログが 2度表示されてしまいます。 ”保存”を選択すると、ファイル保存場所を聞いてきて、2度は表示されません。 ソースは次の通りです。 res.setContentType( "application/octet-stream" ); res.setHeader("Content-Disposition","attachment; filename=\"xxxx.csv\"" ); res.setBufferSize( 163840 ); out = res.getWriter(); out.println( 〜〜〜 ); out.close(); なお、2度とも”開く”を選択すると、問題なくファイルは開かれます。 どなたかご存知でしたら、教えてい頂きたく、 よろしくお願い致します。 |
|
投稿日時: 2003-08-04 16:49
makuraです。
私も以前同じような現象に遭遇しました。 Content-Disposition: attachment; filename="xxxx.csv" を、 Content-Disposition: inline; filename="xxxx.csv" にしてみてはいかがでしょうか? 遠い記憶なので定かではありませんが、これで直ったように記憶しています。 |
|
投稿日時: 2003-08-04 17:17
makuraさん。
さっそくのご返答ありがとうございます。 res.setContentType( "application/octet-stream" ); res.setHeader("Content-Disposition","inline; filename=\"xxxx.csv\"" ); 上記のように変更してみたところ、今度はファイルのダウンロードダイアログが 表示されなくなり、EXCEL で CSV項目が各セルに分解されずに、行まるごと ひとつのセルに格納されて表示するようになってしまいました。 ダウンロードダイアログは表示されなくても良いのですが、 EXCEL でちゃんと表示されないとちょっと... |
|
投稿日時: 2003-08-04 17:31
makuraです。
IE5.5以降には、Content-Type: Application/Octet-Streamでダウンロードダイアログを出さないという問題があります。Content-Type: Application/Octet-Stream-Dummy など、存在しない Content-Type で試してみてください。ダウンロードできるはずです。たぶん。 ってattachmentの時はダウンロードできてたんですよねぇ。(^^; Excelで行がつながるのは、もしかして中身はタブ区切りとかですか? 以下、MSのサポート情報です。 [FIX]既知の内容の種類に対して "Content-Disposition: Attachment" が機能しない http://support.microsoft.com/default.aspx?scid=kb;ja;267991 [ファイルのダウンロード]ダイアログ ボックスが 2 つ表示される http://support.microsoft.com/default.aspx?scid=kb;ja;238588 [ メッセージ編集済み 編集者: makura 編集日時 2003-08-04 17:35 ] |
|
投稿日時: 2003-08-04 17:47
makuraさん。
ありがとうございました。 ダイアログが2度表示されなくなり、1度だけとなりました。 データはカンマ区切りですが、EXCEL での表示もちゃんとなりました。 ほんっとーに助かりました。 感謝いっぱいです。 |
|
投稿日時: 2004-07-02 15:42
私もらふさんと殆ど同じソース作りまして、同じ問題ありました。
ところで、res.setContentType( "application/octet-stream" ); をres.setContentType( "application/octet-stream-dummy" );に修正すると、 二度と表示しなくなりますか? 試してみましたが、二度開くのが変わりませんでした。 どのように修正して直れますか。 教えてい頂きたく、 よろしくお願い致します。 |
|
投稿日時: 2004-07-02 16:31
わたしの場合、次のようの書いたら1度しかダイアログが
表示されなくなりました。参考として頂ければ幸いです。 res.setContentType( "application/octet-stream-dummy" ); res.setHeader("Content-Disposition","inline; filename=\"xxx.csv\"" ); res.setBufferSize( 163840 ); out = res.getWriter(); out.print(〜〜〜); out.close(); |
|
投稿日時: 2004-07-02 19:35
さっそくのご返答ありがとうございます。
Content-Dispositionをinline;にセットしたら、エクスプローラにで問題なく動きました〜 但し、Netscape7.1で動かし見たら、勝手に拡張子.csvの後ろに.doが付いてしまいます(>_<) アプリは、Strutsを用いて作成しており、アクションが「.do」である為、 この「.do」の部分がファイル名の後ろに付くのだかと思いますが、、、 この現象を回避する方法はありますでしょうか? ご存知でしたら、是非教えていただきたいです。 |
1|2|3
次のページへ»