如何用jsp输出存在于oracle数据库Blob字段中的jpg图片

<script type="text/javascript"> google_ad_client = "pub-8800625213955058"; /* 336x280, 创建于 07-11-21 */ google_ad_slot = "0989131976"; google_ad_width = 336; google_ad_height = 280; // </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 在web-oa系统中,档案管理好象不可或缺。其中员工照片常常做成这样:用户通过浏览器上传员工相片,服务端程序接收图片文件,保存到数据库中的某个表的Blob字段里(关于文件上传和blob字段的更新,请参考http://www.javaresearch.org/article/showarticle.jsp?column=106&thread=11003和http://forum.hibernate.org.cn/viewtopic.php?t=254)。通过(jdbc/jdo)和(jsp/servlet),服务器再把保存在Blob字段中的图片文件展现给用户。我这里给出一个关于展现的简单例子。 1.在数据库中建表,并且表要包含Blob字段。 2.用plsql developer这种客户端数据库工具,修改某条记录的Blob字段,存入一个jpg文件。 3.用jdbc或者hibernate获取某条记录的Blob字段数据。(请参考参考资料2) 4.写一个jsp文件,来输出图片。如下所示 //cwry_pic.jsp/ <%@page import="java.io.*"%> <%@page import="com.jagie.business.profile.*" %> <%@page import="java.sql.Blob"%> <% response.reset(); //这个设置很重要,否则客户端浏览器不能识别输出内容,导致弹出下载的对话框。 response.setContentType("image/jpeg"); ServletOutputStream sos = response.getOutputStream(); //这里是用hibernate来根据id装载对象,你可以用别的方式如jdbc来组装对象,附文中有 //BaseInfo这个javabean的示意性代码. BaseInfo bif= ProFileOperator.loadProFile(Long.valueOf("1")); //输出图片 if(bif!=null&&bif.getPic()!=null){ Blob blob=(Blob)bif.getPic(); InputStream pi = blob.getBinaryStream(); int blobsize = (int)blob.length(); byte[] blobbytes = new byte[blobsize]; int bytesRead = 0; while ((bytesRead = pi.read(blobbytes)) != -1) { sos.write(blobbytes, 0, bytesRead); } pi.close(); sos.flush(); } %> 发布这个jsp到你的web服务器,再用浏览器访问这个jsp页面,你就可以看到保存在Blob字段中的图片了。 附文: ///BaseInfo.java示意性代码/// package com.jagie.business.profile; public class BaseInfo{ //pk private Long id; //相片 private java.sql.Blob pic; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public java.sql.Blob getPic() { return pic; } public void setPic(java.sql.Blob pic) { this.pic = pic; } } 最后,希望这篇文章能对你有所启发,如有错误,敬请批评指正! 参考资料: 1:http://www-900.ibm.com/developerWorks/cn/java/l-imgtxt/index.shtml 2:http://forum.hibernate.org.cn/viewtopic.php?t=254
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值