不知道猜的對不對, 最好能打印出來看看.
java.io.File file = new java.io.File("d://s.jpg");//改成這試試.//這是一個例子,是從oracle中取出byte.
   con= myPool.getConnection();
    stmt=con.createPreparedStatement("select  PRDIMAGE  from  product WHERE ITEMIDNO='" + itemNo+"'" );
    rs  =  stmt.executeQuery();
    rs.next();
    InputStream  in  =  rs.getBinaryStream("PRDIMAGE");
    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);
    }祝好運

解决方案 »

  1.   

    我遇到类似的问题,我从数据库里提取图片,为什么显示的也是乱码,大侠请帮忙给看看:jsp 代码如下:<%@ page language="java" import="java.sql.*,java.util.*,java.io.*" %><html>
    <head><title>无标题文档</title>
    </head>
    <body><% String id=request.getParameter("id"); 
     try
    {
          Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
          Connection conn=DriverManager.getConnection("jdbc:odbc:tuku","","");
          Statement stm=conn.createStatement();      String sq="select * from img where id="+id;      ResultSet rs= stm.executeQuery(sq);      ServletOutputStream sout=null;
          InputStream in=null;     if (rs.next())

      response.setContentType("image/gif");
               sout = response.getOutputStream(); 
      in = rs.getBinaryStream("img");

       int len;
       byte[] buf = new byte[1024];
    while ((len = in.read(buf)) != -1)
    {
    //sop.write(buf ,0,len);

                  sout.write(buf ,0,len); }
    }   sout.flush();
    sout.close();
    in.close();
    rs.close();
    stm.close();
    conn.close();
    }
    catch (Exception exc)
    {
    out.println("An error occurs : " + exc);
    }
    %></body>
    </html>
      

  2.   

    把数据库里的图片先下载到服务器上,然后再用<img>标记显示,
      

  3.   

    把jsp改写成servlet试试?不要用jsp输出文件流,每每都是先帮你加两个空格在前面,让本身的二进制流辨识不了你的文件格式。
      

  4.   

    第一你从数据库中出来的数据是否正确,你可以 qqyb2000(答案) 说的方法来测试
    还有一种就是 clarksub所说的,另外你的服务器测试了mime-mapping没有啊
      

  5.   

    在JSP网页中最上面加这样一条
    <%@ page contentType="text/html;charset=UTF-8"%>我刚刚搞定类似的问题!