2016-08-16 58 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(); 

當我使用此代碼來顯示SQL中的BLOB到JSP時,它已工作。 當我使用此代碼在MYSQL中將BLOB顯示爲JSP時,它不起作用。我應該做什麼解決方案?對不起,我的英語不好。以前感謝。

+1

我不明白這個問題,但你不應該關閉你沒有打開的流(與問題無關,而是更多的一般規則)。 –

+0

先生對不起。我在JSP中使用該代碼在ORACLE SQL中顯示BLOB。顯示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或類似的東西響應。

您可以擁有兩個JSP文件。一個用於提供圖像內容,另一個用於顯示它。

在第二個JSP中,一個簡單的<img>標籤可以解決這個問題。

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

這將顯示圖像。

+0

謝謝你sir11thdimension你的答案。如何從二進制更改爲字節先生?我曾嘗試在此鏈接http://stackoverflow.com/questions/11192020/display-blob-image-through-jsp,但我不明白先生。對不起之前。謝謝 – Martin

+0

我已經解決了我的問題先生。只需將Blob IMPORT從SQL更改爲MYSQL,即可立即顯示圖像。非常感謝您的建議! – Martin

+0

不客氣! – 11thdimension