我真的不理解字節數組...可能是因爲我在處理圖像時,第一次如此需要你的幫助從數據庫中檢索字節組在servlet和JSP中
我的base64字符串R0lGODlhDwAPAKECAAAAzMzM///// wAAACwAAAAADwAPAAACIISPeQHsrZ5ModrLlN48CXF8m2iQ3YmmKqVlRtW4MLwWACH H09wdGltaXplZCBieSBVbGVhZCBTbWFydFNhdmVyIQAAOw ==
對此我解碼並將其存儲在數據庫中的MySQL然後我使用上我的servlet側下面的代碼
if (request.getParameter("imgID") != null)
{
iNumPhoto = Integer.parseInt(request.getParameter("imgID")) ;
try
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn=DriverManager.getConnection("jdbc:mysql://localhost:9191/mbcss","root","admin");
stmt= conn.createStatement();
//conn.setAutoCommit (false);
// get the image from the database
byte[] imgData = GetPhoto.getPhoto(conn, iNumPhoto);
System.out.println("imgData="+imgData);
// display the image
response.setContentType("image/gif");
OutputStream o = response.getOutputStream();
o.write(imgData);
o.flush();
o.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
這裏是getPhoto方法
public static byte[] getPhoto (Connection conn, int iNumPhoto)
throws Exception, SQLException
{
String req = "" ;
Blob img ;
byte[] imgData = null ;
Statement stmt = conn.createStatement();
// Query
req = "Select image From visit";
ResultSet rset = stmt.executeQuery (req);
while (rset.next())
{
img = rset.getBlob(1);
imgData = img.getBytes(1,(int)img.length());
}
rset.close();
stmt.close();
return imgData ;
}
訪問表中只有1個的紀錄,但每當我執行我的JSP文件,該文件調用servlet類imgData我已經印我的控制檯上的每個刷新打印不同的價值和形象是也沒有顯示在JSP上
- 每次顯示不同的值是編碼錯誤或字節數組的特性。
- 爲什麼不顯示圖像幫助我
解碼圖像可能是圖像未正確顯示在JSP中的原因。嘗試將圖像數據直接存儲到數據庫而不進行解碼。 – 2012-02-04 05:39:58
@Ravindra Gullapalli你的意思是說,我應該將圖像存儲爲base64字符串只...這對我來說效率太低.. – 2012-02-04 08:21:34