2016-08-16 14 views
0

表示する前に、私はBLOBをMYSQLに挿入して成功しました。このコードを使用してBLOBをJSPに表示しました。JSPを使用してmysqlにBLOBを表示するにはどうすればよいですか?

 Connection con = Koneksi.getKoneksi(); 
     String id = request.getParameter("id_pengurus"); 
     PreparedStatement ps = con.prepareStatement("select foto from pengurus where idpengurus = ?"); 
     ps.setString(1, id); 
     ResultSet rs = ps.executeQuery(); 
     rs.next(); 
     Blob b = rs.getBlob("foto"); 
     response.setContentType("image/jpg"); 
     response.setContentLength((int) b.length()); 
     InputStream is = b.getBinaryStream(); 
     OutputStream os = response.getOutputStream(); 
     byte buf[] = new byte[(int) b.length()]; 
     is.read(buf); 
     os.write(buf); 
     os.close(); 

このコードを使用して、BLOBをSQLからJSPに表示すると、そのコードは機能しました。 このコードを使用してMYSQLのBLOBをJSPに表示すると、動作しませんでした。私はどんな解決策をとるべきですか?私の悪い英語を申し訳ありません。前にありがとう。

+1

私は質問を理解していませんが、開かれていないストリームを閉じるべきではありません(問題はありませんが、一般的なルールがあります)。 –

+0

ごめんなさい。 ORACLE SQLにBLOBを表示するためにJSPでそのコードを使用しました。表示可能なBLOB SQLとMySQLのコードが異なるのでしょうか?ありがとうございます。 – Martin

+0

'is.read(buf)'を呼び出したときに読み込まれたバイト数を確認していないので、すべてを受け取っていない可能性があります。 BLOB全体をバイト配列として取得する場合は、単に 'byte [] buf = rs.getBytes(" foto ")'を呼び出し、 'Blob'クラスを忘れる必要があります。 – Andreas

答えて

0

Blobはバイナリ・コンテンツであり、JSPtext/htmlです。つまり、それらを組み合わせることはできませんが、JSP/Servletを使用して画像を配信する方法を尋ねる場合は、コンテンツをresponseの出力ストリームに書き込んでください。適切なヘッダContent-Type: image/pngなどを設定してくださいレスポンス。

2つのJSPファイルを使用できます。 1つはイメージコンテンツを提供し、もう1つはそれを表示するためのものです。

2番目のJSPでは、単純な<img>タグがトリックを行います。

<img src="/imagejsp.jsp"/> 

これで画像が表示されます。

+0

あなたの答えはsir11thdensionありがとうございます。バイナリからバイトに変更するには?私はこのリンクhttp://stackoverflow.com/questions/11192020/display-blob-image-through-jspで試しましたが、私は先生を理解することはできません。前に申し訳ありません。ありがとう – Martin

+0

私は私の問題を解決しました。 Blob IMPORTをSQLからMYSQLに変更するだけで、今度は画像を表示できます。あなたのアドバイスをありがとう! – Martin

+0

あなたは大歓迎です! – 11thdimension

関連する問題