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