2015-01-21 146 views
0

我找不到使用jsp.What我想爲下面的代碼img標籤爲GET BLOB圖片從數據庫解決方案和顯示,如何讓img標籤的blob圖像JSP

<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
    <%@ page import="java.sql.*" %> 
    <%@ page import="java.io.*"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Insert title here</title> 
</head> 
<body> 
<table border=1> 
<% 
try 
{ 
Class.forName("com.mysql.jdbc.Driver"); 
Connection connection =DriverManager.getConnection("jdbc:mysql://localhost:3306/raptor1_5","root",""); 
Statement st=connection.createStatement(); 
ResultSet rst = st.executeQuery("select * from contacts"); 
while(rst.next()) 
{ 
    Blob image = rst.getBlob("Images"); 
    byte[ ] imgData = null ; 
    imgData = image.getBytes(1,(int)image.length()); 
    String answer = rst.getString("Answers"); 
    //response.setContentType("image/gif"); 

    //OutputStream o = response.getOutputStream(); 


%> 
    <tr> 
    <td><img src="<%=imgData %>" alt="images Here" width="130px" height="90px"></td> 
    <td><%=answer %></td> 
    </tr> 
<%} 
} 
catch(Exception e) 
{ 
    e.printStackTrace(); 
} 



%> 
</table> 
</body> 
</html> 

我試過很多問題像<img>從數據庫檢索blob文件,但我不明白如何顯示。所以請別人告訴我如何使用jsp動態地在<img>標記中獲取斑點圖像。

我希望有人能幫助我... ..!

回答

1

您可以用數據URL內嵌圖片在這裏嘗試,更多的信息:http://www.websiteoptimization.com/speed/tweak/inline-images/

這對數據編碼爲base64。

String imgDataBase64=new String(Base64.getEncoder().encode(imgData)); 

這顯示在網頁中的圖像

<img src="data:image/gif;base64,<%= imgDataBase64 %>" alt="images Here" width="130px" height="90px"/> 

如果你有問題,以base64,您可以使用從https://gist.github.com/EmilHernvall/953733

public static String encode(byte[] data) 
    { 
     char[] tbl = { 
      'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P', 
      'Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f', 
      'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v', 
      'w','x','y','z','0','1','2','3','4','5','6','7','8','9','+','/' }; 

     StringBuilder buffer = new StringBuilder(); 
     int pad = 0; 
     for (int i = 0; i < data.length; i += 3) { 

      int b = ((data[i] & 0xFF) << 16) & 0xFFFFFF; 
      if (i + 1 < data.length) { 
       b |= (data[i+1] & 0xFF) << 8; 
      } else { 
       pad++; 
      } 
      if (i + 2 < data.length) { 
       b |= (data[i+2] & 0xFF); 
      } else { 
       pad++; 
      } 

      for (int j = 0; j < 4 - pad; j++) { 
       int c = (b & 0xFC0000) >> 18; 
       buffer.append(tbl[c]); 
       b <<= 6; 
      } 
     } 
     for (int j = 0; j < pad; j++) { 
      buffer.append("="); 
     } 

     return buffer.toString(); 
    } 

此功能來使用它,只是

String imgDataBase64=encode(imgData)); 
+0

如果我用 MMMMS 2015-01-21 11:05:23

+0

即使我試過 MMMMS 2015-01-21 11:22:12

+0

檢查編輯的答案 – 2015-01-21 11:28:06