2017-09-19 19 views
0

對於像其他許多人一樣打開討論,我表示歉意,但我在本網站的討論中搜索了很多內容,並且沒有找到適用於我的解決方案。 我需要做的事很簡單,但我無法擺脫它。 我有和JPG圖像存儲在我的數據庫,BLOB格式,我想回來並創建一個標籤IMG來顯示它。 通過查詢獲取blob後,我只是將其轉換爲byteArray。 這裏出現問題。 如果我在響應寫和訪問它在其他JSP我可以看到圖像以及..將字節數組轉換爲URL時出錯

<html> 
<head> 
    <title>View Image</title> 
</head> 

<body> 

    <b>View | <a href="index.jsp">Upload</a></b><br/><br/> 

    <% 
    String id = request.getParameter("id"); 
    %> 
    <img src="Message.jsp" width="400px"/> 

</body> 

,但如果我嘗試創建一個標籤IMG並在設置標籤它不會顯示相同的頁面(如下面的JSP代碼所示)。

Class.forName("com.mysql.jdbc.Driver"); 
con = DriverManager.getConnection(connectionURL, user, pass); 

PreparedStatement ps = con.prepareStatement("select * from contacts "); 
ResultSet rs = ps.executeQuery(); 

if(rs.next()){ 
    Blob blob = rs.getBlob("photo"); 
    byte byteArray[] = blob.getBytes(1, (int)blob.length()); 


%> 
<img src="data:image/jpg;base64,<%=byteArray %>" /> 
<% 
    /* response.setContentType("image/gif"); 
    OutputStream os = response.getOutputStream(); 
    os.write(byteArray); 
    os.flush(); 
    os.close();*/ 
} 

(這不顯示任何圖片)

+1

那麼,你應該編碼的字節數組爲64,但你沒有這樣做。但無論如何,第一種解決方案要好得多(除非你不應該使用JSP從數據庫獲取圖像並將其作爲響應發送,而應該使用servlet,JSP不應該包含Java代碼)。 –

回答

0

IMG標記將一個單獨的服務器調用來檢索圖像數據。 src屬性應該指向一個servlet。該servlet應該檢索圖像數據並將其直接寫入輸出流。