中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > Web开发 > JSP > Servlets
如何用jsp输出存在于oracle数据库Blob字段中的jpg图片
作者:未知 时间:2005-07-24 21:21 出处:JR 责编:chinaitpower
              摘要:如何用jsp输出存在于oracle数据库Blob字段中的jpg图片

关键字:jsp,Blob


在web-oa系统中,档案管理好象不可或缺。其中员工照片常常做成这样:用户通过浏览器上传员工相片,服务端程序接收图片文件,保存到数据库中的某个表的Blob字段里(关于文件上传和blob字段的更新,请参考http://www.javaresearch.org/article/showarticle.jsp?column=106&thread=11003http://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
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有