最近工做中遇到從數據庫中讀取blob類型的圖片,並在頁面顯示的問題,想了下,大概有兩種方式,一是將數據轉換成文件,保存在本地,而後將文件地址傳到前臺頁面,讀取保存的圖片文件;二是將文件轉換成數據流,直接在頁面顯示,我以爲第二個方法比較簡單,並且處理速度更快點。下面我將個人操做過程記錄下來,給你們一個參考。html
思路、步驟:java
1:從數據庫讀取blob圖片
spring
2:轉換成數據流
數據庫
3:顯示在頁面
mvc
首先,咱們在springmvc中創建一個controller方法app
@RequestMapping("/toolUtil/") public class ToolUtil{ @AutoWired private ToolUtilManager toolUtilManager;//持久層 /** * 獲取圖片 * @param request * @param response */ @RequestMapping("getPhoto_Blob") public void getPhoto_Blob(HttpServletRequest request,HttpServletResponse response){ String id = request.getParameter("id"); //這個我就不詳細寫了,就是經過傳遞的id查詢你要顯示的圖片 Map resultMap = toolUtilManager.getPhoto_Blob(id) //blob就是你要顯示的那張圖片 Blob blob = (Blob) resultMap.get("Photo"); InputStream in = null; try { in = blob.getBinaryStream(); OutputStream out = response.getOutputStream(); data = new byte[(int)blob.length()]; int i = 0; while((i=in.read(data))!=-1){ out.write(data); } out.close(); in.close(); } catch (Exception e) { e.printStackTrace(); } } }
好了,這就是controller裏的方法,這幾行代碼完成步驟1和步驟2,下面咱們要在頁面顯示spa
<!-- 獲取id爲1的blob類型圖片,定義寬128,高185 --> <img src="<%=request.getContextPath()%>/toolUtil/getPhoto_Blob.xhtml?id=1" width="128" height="185"/>
步驟3就完成了,如今你的圖片就能夠在頁面顯示了,簡單方便。code
代碼手打,不免有漏字、錯字、描述不清現象,歡迎你們批評指教,切勿人身攻擊,若是以爲有用,就告訴我一聲,給我點鼓勵。orm