日期:2014-05-18  浏览次数:20728 次

<急>用jsp从oracle数据库中读取图片并在网页上显示~~

在网上找了些例子,都不怎么完全,
以前没接触过从数据库中读取图片~~
因为比较急~~~~
请给个完整的例子~~~~谢谢~~~~

------解决方案--------------------
帮顶~
------解决方案--------------------
数据库里取图片,图片是怎么存在数据库里的?
------解决方案--------------------
在数据库里图片存的是二进制还是路径呀
------解决方案--------------------
对啊,没说清楚是用blob存储的还是用路径

如果是用blob的,先去网上查下怎么把blob读取到文件流
我这里给你贴个片段,片段里面如何获取数据库连接的代码被我删掉了,因为不同的系统不一样


ByteArrayOutputStream bao = new ByteArrayOutputStream();
st = conn.createStatement();
if(iTimeOut>0)st.setQueryTimeout(iTimeOut);
 
ResultSet rs = st.executeQuery(sql);
  if (rs.next()) {
  //到数据库的输出流
  oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob(fieldName);
  InputStream blobReader = blob.getBinaryStream();
  byte[] b = new byte[blob.getBufferSize()];
  int len=-1;
  while ((len=blobReader.read(b)) != -1) {
  bao.write(b, 0, len);
  }
  bao.flush();
  bao.close();
  }else{
  rs.close(); 
  st.close();
  return null;
  }
  st.close(); 
rs.close();
return bao;

然后在JSP里面写这些代码

ServletOutputStream sos = response.getOutputStream();
baos.writeTo(sos);//baos就是文件流
sos.flush();

这样图片就显示出来了。
------解决方案--------------------
Java code

<%@ page contentType="text/html;charset=GBK"%>
<%request.setCharacterEncoding("GBK");%>
<%@ page import="java.util.*" %>
<%@ page import="javazoom.upload.*"%>
<%
    if (MultipartFormDataRequest.isMultipartFormData(request)) {
        MultipartFormDataRequest mrequest = new MultipartFormDataRequest(request);
        Hashtable files = mrequest.getFiles();
        if ((files != null) || (!files.isEmpty())) {
            UploadFile file = (UploadFile) files.get("uploadfile");
            String file_name = file.getFileName();
            PreparedStatement pstmt=con.prepareStatement("insert into blobtest values(1,?)");
            FileInputStream fis = new FileInputStream(file.getInpuStream());            
            //把输入流设置为预处理语句的对象。
            pstmt.setBinaryStream(1, fis, (int)file.length());              
            //执行更新
            pstmt.executeUpdate();                    
            pstmt.close();
                }
        }

------解决方案--------------------
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.io.*"%>
<jsp:useBean id="sqlConn" scope="application" class="dgeip.OraconnDg"/>
<%

Connection con=null;
Statement stmt=null;
try{
con=sqlConn.getConnection();
stmt=con.createStatement();//数据库的连接
String sql="select * from dd_model WHERE model_no='07002'";
ResultSet rs=stmt.executeQuery(sql);
rs.next();
InputStream in=rs.getBinaryStream("shoe_pic");
response.reset();
response.setContentType("image/jpeg");
byte[] b=new byte[1024];
int len;
while((len=in.read(b))>0)
{
response.getOutputStream().write(b,0,len); 
}
out.clear();
out = pageContext.pushBody();
in.close();
rs.close();
stmt.close();
con.close();