blob存入与读取图片问题

zhangchu_63 2011-08-25 09:38:56
我有两段代码分别是存入和读取:
保存:

conn = jdbctemplate.getDataSource().getConnection();
conn.setAutoCommit(false);
ps = conn.prepareStatement("UPDATE ZP SET ZP = EMPTY_BLOB() " + sql.toString());
ps.execute();
ps = null;
ps = conn.prepareStatement("SELECT ZP FROM ZP " + sql.toString() + " FOR UPDATE");
rs = ps.executeQuery();

if(rs.next()){
blob = (oracle.sql.BLOB)rs.getBlob(1);
os = blob.getBinaryOutputStream();

byte [] b = decoder.decodeBuffer(photo);
InputStream is = new ByteArrayInputStream(b);

byte [] data = new byte[1024];
int len=-1;

while((len = is.read(data)) > -1){
os.write(data, 0, len);
}

}else{
msgInfo = "无对应记录。";
}
os.flush();
os.close();
conn.commit();

photo是通过BASE64编码过的图片字符串。

读取:

Map map = jdbctemplate.queryForMap(sql.toString());

// oracle.sql.BLOB blob = (oracle.sql.BLOB)map.get("ZP");

BASE64Encoder encoder = new BASE64Encoder();
photo = encoder.encode((byte[])map.get("ZP"));


从blob中取出后用BASE64编码。

保存之前我打印了photo字符串,直接拷贝出来可以显示图片。但是打印读取代码里的photo 却不能显示图片。
求解。

我的图片是通过本地上传后编码成字符串,用WEBSERVICE保存到远程的库,同样是用WEBSERVICE将远程库中的图片读出来在本地显示。表现层用的是FLEX。

P.S. 出问题的是我用上面保存方法保存的图片,库中原有的以其他方式存入的照片读取都没问题。
...全文
791 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
乡客2023 2012-07-16
  • 打赏
  • 举报
回复
遇到一样的问题
zhangchu_63 2011-09-07
  • 打赏
  • 举报
回复
UP一下,我还没解决呢。
zhangchu_63 2011-08-26
  • 打赏
  • 举报
回复
我以后会注意的。不过现在设计都已经定了,还有很多周边的配套系统,我单方面改不了。

没有人能给点建议吗?
liuyuhua0066 2011-08-25
  • 打赏
  • 举报
回复
别把图片存到数据库中,数据库中应该存的是指向图片所在的硬盘路径。
zhangchu_63 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liuyuhua0066 的回复:]
又见如此处理图片……
[/Quote]
怎么个意思
zhangchu_63 2011-08-25
  • 打赏
  • 举报
回复
我试过几次,应该是保存的时候有问题。
我把能正常显示的图片,在读取方法里的photo参数打印出来,直接拷贝,赋给保存方法里的photo,结果
还是无法正常显示。解码后的byte[]保存至BLOB出了什么问题呢。
liuyuhua0066 2011-08-25
  • 打赏
  • 举报
回复
又见如此处理图片……

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧