2015-08-28 104 views
1

我想從類型BLOB表中命名的圖像和命名的圖像列中檢索圖像,但運行代碼時它給像這個 -從Oracle數據庫中檢索圖像,並顯示在JSP圖像

團塊代碼「 [email protected]

請參閱我的代碼獲取和顯示在jsp頁面/瀏覽器中的圖像: -

ResultSet resultset = 
    statement.executeQuery("select * from image where id = '" + id + "'") ; 

瀏覽器頁面: -

<TABLE border="1"> 
     <TR> 
      <TH>ID</TH> 
      <TH>picture</TH> 
     </TR> 
     <TR> 
      <TD> <%= resultset.getString(1) %> </TD> 
      <TD> <%= resultset.getBlob(2) %> </TD> 
     </TR> 
    </TABLE> 
    <BR> 
+0

嘗試使用'resultSet.getBinaryStream()迴應的圖像。' –

回答

1

第一:

[email protected]toString()是方法的響應,而不是圖像。

二:

ResultSet resultset = 
    statement.executeQuery("select * from image where id = '" + id + "'") ; 

SQL注入的緣故,請!

最後
你不能迴應image與心臟text數據!必須通過分離的cgi/servlet來檢索圖像,其中內容類型設置爲image,因此適用於您的情況。

<TD> <%= resultset.getString(1) %> </TD> 
<TD> <img src="/get_img?id="<%=id%>/> </TD> 

,以後你需要一個servlet/CGI爲get_img

@WebServlet(name = "img", urlPatterns = {"/get_img"}) 
public class get_img extends HttpServlet{ 
doGet(HttpServletRequest req, HttpServletResponse resp){ 
... 
resp.setContentType("image/jpg");//or image/whatever 
    try(ResultSet rs=ps.executeQuery()){//where ps is a PreparedStatement 
    //set the content length, and respond image data 
    //example: http://stackoverflow.com/a/4332975/5266804 
    } 
... 
} 
}