- - PR -
ファイルのダウンロードの件です
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-12-17 10:25
いつも、お世話になってます。
サーブレットでファイルのダウンロードプログラムを作成しているのですが、IEで、サーブレットにアクセス後、ファイルのダウンロードのダイアルボックスが現れて「開く」を押すと、再度ファイルのダウンロードのダイアルボックスが現れてしまいます。そして、二回目のダイアルボックスで「開く」を選択するとファイルを開くことが出来ます。 一回目のダイアルボックスで「保存」を選択すると二回目のダイアルボックスは出ることなく保存が出来ます。 なぜ「開く」を選択すると二回もダイアルボックスが表示されるのか、自分では原因がわからないのでよろしくお願いします。 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("application/octet-stream;charset=Windows-31J"); response.setHeader("Content-Disposition","attachment; filename=dwh"); PrintWriter out=response.getWriter(); out.print("ダウンロード情報"); } _________________ |
|
投稿日時: 2004-12-17 10:40
すいません。とりあえず、原因を発見したので合っているか教えてください。
原因 サーブレットにたいしてPOSTでアクセスしていたため。 doPostのソース protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } 結論 クライアントがPostでファイルをダウンロードしようとした時は、「開く」を選択すると二回ダイアルボックスが表示されてしまう。 でよろしいでしょうか? |
|
投稿日時: 2004-12-17 11:29
こんにちは。
私も同じような現象に悩まされたことがあります。 恐らく、ContentTypeをうまく定義すれば回避できたかと思います。 私の場合はExcelでしたので、下のような定義になります。 HttpServletResponse.setContentType("application/vnd.ms-excel; charset=MS932"); HttpServletResponse.setHeader("Content-disponsition", "attachment:filename=\"QR_LIST.xls\""); ブラウザのソース表示ではこの辺りの情報までは参照できないので、 横取り丸というソフトを使うと、1回目、2回目の違いが分かったような気がします。 |
1