※ ChatGPTを利用し、要約された質問です(原文:ServletOutputStreamについて)
ServletOutputStreamについて
Streamについて質問です。
サーブレットより、サーバにあるファイルを読み、
それをクライアントでブラウザから表示させようと
思っているのですが、
ファイルが破壊されているためファイルを表示できない。
といった、エラーが出てしまいます。
処理の一部としては
=======================================
/* pdfのデータを取得しJSPで表示させる */
// getDataよりサーバファイルをバイト配列で取得
byte data[] = getData();
ServletOutputStream sos = response.getOutputStream();
sos.write(data);
sos.flush();
sos.close();
=======================================
のようにしているのですが、JSPで
Content-type = "application/pdf"
を指定しても、AdbeReaderは起動しますが、
ファイルが壊れているのエラーが出て表示されません。
JPGファイルでは成功したのですが、なぜでしょうか…。
サーブレット内部でFileOutputStreamを使って
同じバイト配列に対してファイルを作成すると、
問題なくサーバにファイルが作成され見ることが
できるのですが、JSPで表示させると失敗してし
まいます。
正直、不明です。
何か原因のヒントとかあったら教えてください。
お礼
返事が遅れまして、すいません。 質問の内容がまずかったです。 実装しているのはサーブレットです。 で、この問題ですが、close()とflush()がどうもまずいようでした。 実は、このクローズした後に、まだサーブレットの処理が続いているため、イリーガルエクセプションが発生し、ファイルが壊れてしまったようです。 とりあえず、対処としてはデータをリクエストにセットして、ディスパッチのサーブレットで、改めてストリームでダウンロードするようにしました。