从数据库(oracle)读出的图片(blob)不能正常显示?

jdsbj2006 2006-02-24 11:46:01
请高手看看代码有什么问题,谢谢!
InputStream in=rs.getBinaryStream("sj");
System.out.println("getBinaryStream!");
ServletOutputStream toclient=response.getOutputStream();
System.out.println("getOutputStream!");
int len=0;
byte[] bs=new byte[10*1024*1024];

response.reset();
response.setContentType("image/jpeg");

System.out.println((len=in.read(bs)));
while((len=in.read(bs))>0){
System.out.println("while");
toclient.write(bs,0,len);
System.out.println("toclientwrite!");
}
in.close();
toclient.flush();
toclient.close();
}
rs.close();
...全文
299 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sophia2000 2006-03-08
  • 打赏
  • 举报
回复
友情up
sophia2000 2006-03-08
  • 打赏
  • 举报
回复
ResponseOutputStream response = new ResponseOutputStream();

String imageID = (String) parms[0];
Image image = new ImageManager().getImageByID(imageID);

response.reset();
response.setContentType("image/jpeg");
response.write(image.getImagedata());//byte[] 类型
response.flush();
response.close();

我的这个为什么不行啊??
doway 2006-02-25
  • 打赏
  • 举报
回复
>byte[] bs=new byte[10*1024*1024];

太大了,new byte[1024] 就可以了。

>System.out.println((len=in.read(bs)));

这句必须注释掉。
xujianfu 2006-02-25
  • 打赏
  • 举报
回复
把这句System.out.println((len=in.read(bs)));换成System.out.println(len);
放到while(){System.out.println(len);//不就可以了}
你这样试试;

Blob b = rs.getBlob("photo_image");
long size = b.length();
//out.print(size);
byte[] bs = b.getBytes(1, (int)size);
response.setContentType("image/jpeg");
OutputStream outs = response.getOutputStream();
outs.write(bs);
outs.flush();
rs.close();
skycncomp 2006-02-25
  • 打赏
  • 举报
回复
招聘
地点北京

qq: 283765999

81,114

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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