- - PR -
テキストファイルダウンロードでJSPの出力が含まれる
1|2|3|4
次のページへ»
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-06-23 14:15
いつも参考にさせていただいております。
件名の件について質問させてください。 今TOMCAT上で動作するファイルダウンロード処理を作成しております。そこで以下の問題が発生しました。 ・テキストファイルをダウンロードすると末尾にJSP(JSF)の出力が含まれている。 たぶんダウンロードするテキストファイルとHttpServletResponseオブジェクトに含まれているJSP(JSF)の出力が混ざっていると思われるのですが回避方法がわかりません。 ちなみに、JPEGファイルやZIPなどの圧縮ファイルは正常にダウンロードできます。 以下ダウンロード処理のソースです。 ------------------------------------------------------------------------ response.setContentType(getContentType(fileName)); response.setHeader("Content-Disposition", "attachment; filename=\\\\"" + encode(fileName) + "\\\\""); String uploadDir = UploadUtil.getUploadFullPath(); BufferedOutputStream output = new BufferedOutputStream(response.getOutputStream()); BufferedInputStream input = new BufferedInputStream(new FileInputStream(uploadDir + fileName)); byte buf[] = new byte[256]; int len; while ((len = input.read(buf)) != -1) { output.write(buf, 0, len); } output.close(); input.close(); ---------------------------------------------------------------ソースここまで 開発環境 ・MyFaces(これが悪さをしてる??) ・TOMCAT5.0.30 なにか分かる方がいらっしゃいましたらご教授願います。 | ||||||||
|
投稿日時: 2005-06-23 14:24
以前、ファイル出力処理を作り込んで居た時に似たような現象に遭遇したことがあります。
原因は 「Servletや、そこから呼び出すメソッドの処理中に例外が投げられて、 Output.Close()を通らずにResponseを返していた」 でした。 もし該当すれば儲けもの。外してたら申し訳ないですが。 | ||||||||
|
投稿日時: 2005-06-23 14:38
早速の返信ありがとうございます。
output.close();の後にデバッグプリントを入れてみましたが、 正常に終了しているようでした。 また、なにかあればよろしくお願い致します。 | ||||||||
|
投稿日時: 2005-06-23 16:16
こんにちは。
不思議な現象ですね。
末尾に含まれている出力内容を記載して頂くことは可能でしょうか。 | ||||||||
|
投稿日時: 2005-06-23 16:59
masaさんこんにちは。
ほんとに不思議で困ってます。。 実際に確認した例は以下のとおりです。 --アップロードしたテキストファイルの中身------------------------------- テキストファイルです。 --------------------------------------------------------------ここまで --同ファイルをダウンロードした結果------------------------------------- テキストファイルです。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"/> <title>DOWNLOAD</title> </head> <body class="content"> <div class="download"> <h2>ファイルのダウンロード</h2> (以下略) --------------------------------------------------------------------ここまで 何か分かりましたらよろしくお願い致します。 | ||||||||
|
投稿日時: 2005-06-23 17:09
まるまるhtmlですね。 この内容のjspへフォワードする記述がどこかへ入っていたりしませんか? | ||||||||
|
投稿日時: 2005-06-23 17:33
こんにちは、moneです。
話の流れから推測するに、 ダウンロード後に違う画面に遷移させたいということですかね? けれども、レスポンスに
しているので、遷移後に表示させたい画面のHTMLまでダウンロード用のデータとみなされている。
これを回避して、ダウンロード後に画面遷移させたいということかな? それなら当然JSPへのフォワードはありそうですね。 | ||||||||
|
投稿日時: 2005-06-23 17:40
まるまるhtmlなんです。。
JSPへのフォワードはJSFが制御しています。 そこが原因となっているのでしょうか。 JSFではStrutsのように"success"等の文字をリターンすることで画面遷移を行い、 文字列をリターンしければ次画面に遷移するのでかならずフォーワードされることになるのでしょうか?? そのあたりに絞って調査してみます。 |
1|2|3|4
次のページへ»