最近要写一个需求,从db2中读取图片数据,blob类型,然后在前端页面显示,采用的是前后端分离的开发模式,使用下面这种方式,可以忽略前端,前端不需要动代码,就可直接显示。。
直接上代码:
sql:只给大家截取关键部分,select xmlgroup(pe.PictureData) as PictureData from ET_PICTURE pe;
java:
public List<IdeaBlockSelectionVo> selectBlockDatas(Map<String, Object> map) {
List<IdeaBlockSelectionVo> vos = ideaBlockSelectionDao.selectBlockDatas(map);
for (IdeaBlockSelectionVo v:vos) {
String str = getTotalMidValue(v.getPictureData(),"<PICTUREDATA>","</PICTUREDATA>");
v.setPictureData("data:image/jpeg;base64,"+str);
}
return vos;
}
public String getTotalMidValue(String source, String priStr, String suxStr) {
if (source == null)
return null;
int iFirst = source.indexOf(priStr);
int iLast = source.lastIndexOf(suxStr);
if (iFirst < 0 || iLast < 0)
return null;
int beginIndex = iFirst + priStr.length();
return source.substring(beginIndex, iLast);
}
关键代码完成,最主要的思路就是 使用 xmlgroup 将二进制数据直接转换成 xml格式文件,然后可以直接截取标签中的内容,不需要解析,太蛮烦,然后返回前端时直接 拼接 data:image/jpeg;base64 就可以。。
前端就可以直接显示图片了。。