帮忙看一下从oracle中显示图片的程序(分已经破产了..)

方舟 2003-10-16 04:10:02
已成功录入图片,存放字段为file (long raw)


<%@ page language="java" import="java.sql.*"%>
<%@ page import="java.io.*"%>
<%@ page contentType="text/html;charset=gb2312"%>

<%
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@popotang:1521:oradb";
String image_id = (String) request.getParameter("ID");

Connection con=DriverManager.getConnection(url,"system","zjt7890");
PreparedStatement sql=con.prepareStatement("select * from linkway.uploadfile WHERE id =1 " );
ResultSet rs = sql.executeQuery();

rs.next();
//输入img字段内容到in
InputStream in = rs.getBinaryStream("file");

//以下可是任何处理,比如向页面输出:

response.reset();
//此处的image/jpeg似乎与显示的图片格式无关
//因为我显示jsp和gif都没有错误
response.setContentType("image/gif");
byte[] b = new byte[1024];
int len;
while((len=in.read(b)) >0)
response.getOutputStream().write(b,0,len);

in.close();
rs.close();
%>

执行错误是
====================================================================
exception

java.lang.IllegalStateException: getOutputStream() has already been called for this response
org.apache.coyote.tomcat5.CoyoteResponse.getWriter(CoyoteResponse.java:628)
org.apache.coyote.tomcat5.CoyoteResponseFacade.getWriter(CoyoteResponseFacade.java:192)
org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:165)
org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:158)
org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:243)
org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:160)
org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:120)
org.apache.jsp.ShowImg_jsp._jspService(ShowImg_jsp.java:81)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:136)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:320)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:293)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)



不懂啊,
...全文
35 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lnzyb 2003-11-03
  • 打赏
  • 举报
回复
从新定义一个流不要命名成out试一试。
littlecong 2003-10-17
  • 打赏
  • 举报
回复
与oracle无关

while((len=in.read(b)) >0)
response.getOutputStream().write(b,0,len);

为什么每次都要getOutputstream?
方舟 2003-10-17
  • 打赏
  • 举报
回复
up

81,091

社区成员

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

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