最近工做中遇到从数据库中读取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