
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で表示させると失敗してし
まいます。
正直、不明です。
何か原因のヒントとかあったら教えてください。
No.1ベストアンサー
- 回答日時:
JSP だと、スクリプトレット以外の部分が、
空白行なども含めて、自動的に out.print()
に変換されてしまっているんじゃないですか。
work ディレクトリ(TOMCATの場合)などにある、
JSP から自動生成されたサーブレットのコードなどを
確認してみてはどうでしょう。
もしそうなら、JSP ではなくサーブレットで
実装すべきです。
もうひとつ、PDFファイルはテキストとして開いても、
そこそこ読めるので、ダウンロードしたファイルが
元のファイルとどう異なるかを比較するのもよいかと
思います。
返事が遅れまして、すいません。
質問の内容がまずかったです。
実装しているのはサーブレットです。
で、この問題ですが、close()とflush()がどうもまずいようでした。
実は、このクローズした後に、まだサーブレットの処理が続いているため、イリーガルエクセプションが発生し、ファイルが壊れてしまったようです。
とりあえず、対処としてはデータをリクエストにセットして、ディスパッチのサーブレットで、改めてストリームでダウンロードするようにしました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- サーバー 別サーバに構築したApache+Tomcatの連携について 2 2023/03/06 23:23
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- Excel(エクセル) 【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在 5 2022/08/31 10:03
- その他(IT・Webサービス) WEBサイト内のファイルを探す方法は? 1 2022/11/11 16:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HTMLテキストリンクでExcelファ...
-
Eclipseで検索ができなくなった
-
0バイトのテキストファイル
-
[C#]FTPでの複数のファイル...
-
リソースファイルを認識してく...
-
C# ファイルサイズの取得(ファ...
-
【VBA】印刷マクロのループ処理...
-
MPEG1とMPEG2を見分ける
-
C++.NET 2003 「空のドキュメ...
-
JavaでPDFファイルに変換するに...
-
windows 環境でのファイル操作...
-
IMEのモードを強制的に変えるには
-
VBAで、JPG写真の撮影日時を読...
-
ファイルのダウンロードが遅い
-
GetOpenFileName()について
-
C++によるファイル送受信プログ...
-
vbaの構文の修正相談(xmlファ...
-
サイトマップにサブドメインを...
-
VB2008 iniファイルの全セクシ...
-
VB6 実行ファイルにデータの保存
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Eclipseで検索ができなくなった
-
0バイトのテキストファイル
-
【Excel VBA】取り込んだファイ...
-
VBAで、JPG写真の撮影日時を読...
-
VB6.0のメモリリークについて
-
HTMLテキストリンクでExcelファ...
-
サイトマップにサブドメインを...
-
リソースファイルを認識してく...
-
main関数のコマンドライン引数...
-
ファイル内容を比較する方法
-
ファイルのダウンロードが遅い
-
2GB以上のファイルを扱う方法
-
VB2008 iniファイルの全セクシ...
-
【VBA】印刷マクロのループ処理...
-
<input type="file" で初期値...
-
ファイル作成日時と更新日時を...
-
C++.NET 2003 「空のドキュメ...
-
VB6でTIFF図のプロパティを...
-
Javaのファイルダウンロードに...
-
vbaの構文の修正相談(xmlファ...
おすすめ情報