- - PR -
jpgを出力する方法がわかりません。
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-07-06 12:18
現在サーブレットでOracleにアクセスしてBlob型のバイナリデータを取得して、それをjpgファイルに変換し、jspに表示させようとしているのですが、webを見回ってもバイナリファイルのパスを指定してのjpgを返す方法しか載っていません。どうかヒントでもよろしいのでご教授お願いします。
| ||||||||
|
投稿日時: 2005-07-06 12:56
こんにちは。
HTMLはドキュメントの中に<img>タグが存在した場合、src属性で指定された ファイルをダウンロードしに行くという流れで、画像を表示します。 <img src="hoge.jpg"> ならばhoge.jpgが表示されますね。 ここで指定するsrc属性には、バイナリファイルのパスだけでなく、Servlet のパスを指定し、動作させることも可能です。 <img src="/servlet/hogeServlet"> 従って、hogeServletにjpgファイル変換のロジックを実装し、responseとし てjpgファイルを返してあげれば、実現可能だと思いますよ。 | ||||||||
|
投稿日時: 2005-07-06 13:06
どもです、がると申します。
一応念のため。 「ヘッダの設定も忘れずにね ^^」 Content-typeをちゃんとimage/jpeg にしてあげましょう。 | ||||||||
|
投稿日時: 2005-07-06 13:10
>hogeServletにjpgファイル変換のロジックを実装し、responseとし
>てjpgファイルを返してあげれば、実現可能だと思いますよ。 返信ありがとうございます。 masaさんが言われるように、Blob型バイナリデータをjpgに変換してjspに返すというほうほうを実行しようとしているのですが、肝心のjpgに変換するロジックで悩んでいます。 ServletOutputStreamをしようしてできそうなんですが、ServletOutputStreamというものを使ったことがないもので、勝手がわからないので困っています。どなたか教えていただけないでしょうか? | ||||||||
|
投稿日時: 2005-07-06 13:39
こんにちは。 Blob型のバイナリデータはjpgのデータそのものではないのですか? jpgのデータが格納されているのであれば、そのままバイナリデータをStreamに流し込めば画像を表示できます。 実装方法は、「Servlet ファイル ダウンロード」などで検索すればヒットします。 | ||||||||
|
投稿日時: 2005-07-06 14:51
バイナリデータをStreamに流し込むということは、
Blob data; resp.setContentType("image/jpeg"); byte[] buff = new byte[1024]; OutputStream out = null; InputStream in = null; try{ in = data.getBinaryStream(); out = new FileOutputStream("file.jpg"); int n; while(n = in.read(buff) != -1){ out.write(buff,0,n); } }catch(IOException e){ } finally{ try{ if(in != null){ in.close(); } if(out != null){ out.close(); } }catch(IOException e){ } } という感じにですか? [ メッセージ編集済み 編集者: Noda 編集日時 2005-07-06 17:17 ] | ||||||||
|
投稿日時: 2005-07-06 18:19
この部分を、
にすれば動きそうですね。 | ||||||||
|
投稿日時: 2005-08-12 12:11
こんにちは。
現在、jpgのダウンロードとは多少関係する問題に遭遇していますので、 このスレに書かせていただきました。 画像ファイルをバイナリ形式で取得する際に、エラーが発生することがあります。 具体的には、上記の in = data.getBinaryStream(); では、 ・拡張子が「.jpg」であれば、ダウンロードまでうまくいける ・拡張子が「.P21」であれば、java.lang.null pointer exception が発生する 走ってるソースはまったく一緒で、なぜこうなるのかわかりません。 何か考えられる原因がありますでしょうか?ご教示していただきたいです。 |
1