应该是response.setContentType("image/jpeg");
限定了只能读取jpg文件了。建议换为application/octet-stream,就任何文件都可以了。

解决方案 »

  1.   

    java.lang.IllegalStateException: getOutputStream() has already been called for this response修改response.getOutputStream().write(b,0,len);
    为out.write(len);还有,建议你最后要关闭数据库连接。。
    if(con)
       con.close();
      

  2.   

    还有,既然你重写了response,out,那么,一开始的<img width=100 height=30 scr=就没有意义了
      

  3.   

    不行呀改成out.write(len);后是不报错可是图片显示不出来
      

  4.   

    img width=100 height=30 scr=
    删除没??注意你的文件的头部。建议修改:
    <%@  page  language="java"  import="java.sql.*,java.io.*"%><%把这段拷贝过去,不要做任何修改,看看结果怎么样?
      

  5.   

    这里涉及到java编译器编译时增加换行符的问题,会导致图片出不来。如果你是一个txt文件,出来后就会发现文件第一行多了回车符。所以,一定要<%@ page ....%><%紧接。而且,最后最好加
    return;
    %>
      

  6.   

    详细查查问题。
    你上面的代码不适合,
    select * from pics,然后又一次性把它们写到out,是不行的。
    如果你是要一个页面显示所有图片,那只能:先从数据库把它们存到服务器的一个目录下。
    然后在页面上添加<img>
    如果只显示一张大图,select * from pics where id =?
    只选一条记录才行,response也不会不停的被重写了。
      

  7.   

    照旧不变,图片能读出来,还是报错
    java.lang.IllegalStateException: getOutputStream() has already been called for this response
    而且独立发布到tomcat里图片都读不到
    http://expert.csdn.net/Expert/topic/2963/2963440.xml?temp=.1165125
    看看他们的,好象都一样没什么帮助
      

  8.   

    http://www.gyro.cn/view.php/node_18_17.htm这个应该是你出错的原因
      

  9.   

    一步一步地弄,
    1,写代码把文件从数据库保存到服务器的临时目录;
    2,做代码把这个临时目录下的图片写到out里面。
      

  10.   

    img 的 src 应该指定的是图片文件路径而你这段代码
     <% //String  id=request.getParameter("id");
     Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
     Connection con = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=furom","sa","system");
    String  cmd="select * from pics";
    PreparedStatement  sql=con.prepareStatement(cmd);
    ResultSet  rs  =  sql.executeQuery();
    while(rs.next()){
    InputStream  in  =  rs.getBinaryStream("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);}
    %>是获取图片存放在数据库中的二进制数据,可将上面代码独立为myImg.jsp页面,contentType设为image/*
    原来文件的src="myImg.jsp"