- - PR -
Struts Actionクラスでのダウンロード
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-09-12 09:52
枠上コンドル様
返答ありがとうございます!返事が遅れてしまい、申し訳ないです。 下記の内容、早速試してみます。 結果は後ほど報告いたします。
| ||||
|
投稿日時: 2005-09-12 11:05
枠上コンドル様、uk様、インギ様
ご助力をいただき、ダウンロード部分が意図する形で実現できました。 uk様よりいただいたコメントから PrintWriter writer = response.getWriter(); writer.write(output); 上記を使用すると、XMLのダウンロード時にHTMLのタグが挿入される形になってしまうため、使用できませんでした(ToT) 下記のソースコードが修正を加えて動作する形になったものです。 これは確証ではないのですが、response.setHeader()メソッドでセットする順番も関係してくるものかな?と思います。 Content-Dispositionの後にPragmaやCache-Controlをセットしても動作しなかったもので・・・^^; みなさんありがとうございました。またよろしくお願いします //下記はアクションクラスでダウンロードを呼び出す部分です writeToStream("CSV", output, "test", response); //response.getOutputStream().flush(); //response.getOutputStream().close(); return null; //ダウンロードメソッド void writeToStream(String format, String output, String fileName, HttpServletResponse response) { try { String fileNameExt = ""; if("CSV".equals(format)) { fileNameExt = ".csv"; } else if("XML".equals(format)) { fileNameExt = ".xml"; } //削除 //response.setContentType("application/octet-stream"); //response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + fileNameExt + "\""); //response.setHeader("Cache-Control", "no-cache"); response.setContentType("application/octet-stream"); response.setHeader("Pragma", ""); response.setHeader("Cache-Control", ""); response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + fileNameExt + "\""); if(output != null) { OutputStream os = response.getOutputStream(); OutputStreamWriter w = new OutputStreamWriter(os); BufferedWriter writer = new BufferedWriter(w); writer.write(output); writer.close(); w.close(); } } catch(Exception e){ //ログ出力を行うクラスを使用し、例外を出力 log.debug("An exception occurred ProcessOrderDownload ", e); } } |