/*
 * ====================================================================
 *Copyright 2003 iZz Studio, All rights reserved. Design:Ali
 *
 *文件名:ImageShow.java
 *实现功能:读取数据库中存放的二进制图片
 *
 *最后修改日期:2003-4-6
 */import javax.servlet.*; 
import javax.servlet.http.*; 
import java.io.*; 
import java.util.*; 
import java.sql.*; 
import com.ali.sql.*;public class ImageShow extends HttpServlet { private ServletConfig config;    public void init(ServletConfig config) throws ServletException { 
        this.config = config;
        super.init(config);
    }//////////////////////////////doGet/////////////////////////
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
        //设置图片类型头
        response.setContentType("image/pjpeg");
        SQLForm sqlBean = new SQLForm();
        sqlBean.setDatatable("SEXMOVIE");
        String sql = "SELECT * FROM "+sqlBean.getDatatable()+" WHERE SEX_ID='"+request.getParameter("id")+"'";
        try
       {
          ResultSet rs = sqlBean.Query(sql);
          if (rs.next()){
             //获取数据库中的图片流,type有A和B两值,分别对应两个字段FILE_A,和FILE_B
             InputStream in = rs.getBinaryStream("FILE_"+request.getParameter("type"));
             ServletOutputStream out = response.getOutputStream();//输出流
             int len; 
             byte[] buf=new byte[1024]; 
             //开始输出图片
             while ((len=in.read(buf,0,1024))!=-1) {
                 out.write(buf,0,len); 
             }
             out.flush(); 
             out.close();
             in.close();
          }
          rs.close();
       }
        catch (SQLException e) {
            //DO Some code
        } 
        sqlBean.Close();
    }
}

解决方案 »

  1.   

    调用图片
    <img src="../servlet/ImageShow?id=<%=rs.getObject("SEX_ID")%>&type=A" width="80" height="100" border="0">
      

  2.   

    //取得数据库中的数据
     Sql="select  *  from  list order by date desc";
     result=DbaObj.ExecuteQuery(Sql);
     result.next();
     //将数据库中的数据读到流中
      InputStream in =result.getBinaryStream("body"); 
     //设置输出的格式 
      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); 
      in.close();