String sql="select tupian from tupian where id=3";
ResultSet rs=null;
InputStream m=null;
FileOutputStream outputfile1=null;
ByteBuffer buf=null;
long tupianSize;
File f1=new File("test1.jpg");
try{
testmysql db=new testmysql();
rs=db.executeQuery(sql);
if(rs.next()){
  m=rs.getBlob("tupian").getBinaryStream();
 }
  rs.close();
  tupianSize=m.available();
//** bb用来保存图片的字节流   
  byte[]  bb  =new byte[(int)tupianSize]; 
          outputfile1 =new FileOutputStream(f1);
          outputfile1.write(bb);
  }catch(Exception e){
System.out.println(e);
       }

解决方案 »

  1.   

    奇怪!
    从 clob 得到一个输入流,再将写到一个输出流 不就行了???
    会困惑好久???
    不是想根据 CLOB的内容来得到图像类型吧??那我可不会!
      

  2.   

    import javax.servlet.http.*; 
    import java.io.*; 
    import java.util.*; 
    import java.sql.*; 
    import net.seasky.util.*; 
    import net.seasky.database.DbConnectionManager;  
    public class CoverServlet extends HttpServlet { 
     private static final String CONTENT_TYPE = "image/gif"; 
     public void init(ServletConfig config) throws ServletException { 
       super.init(config); 
     } 
     
     public void doGet(HttpServletRequest request, HttpServletResponse response 
    ) throws ServletException, IOException { 
       response.setContentType(CONTENT_TYPE); 
       int albumID; 
       ServletOutputStream out = response.getOutputStream(); 
       try { 
         albumID = ParamManager.getIntParameter(request,"albumID",0); 
       } 
       catch (Exception e) { 
         response.sendRedirect("../ErroePage.jsp"); 
         return; 
       } 
       try { 
         InputStream in=this.getCover(albumID); 
         int len; 
         byte buf[]=new byte[1024]; 
         while ((len=in.read(buf,0,1024))!=-1) { 
           out.write(buf,0,len); 
         } 
       } 
       catch (IOException ioe) { 
         ioe.printStackTrace() ; 
       } 
     } 
     
     private InputStream getCover(int albumID) { 
       InputStream in=null; 
       Connection cn = null; 
       PreparedStatement pst = null; 
       try { 
         cn=DbConnectionManager.getConnection(); 
         cn.setCatalog("music"); 
         pst=cn.prepareStatement("SELECT img FROM cover where ID =?"); 
         pst.setInt(1,albumID); 
         ResultSet rs=pst.executeQuery(); 
         rs.next() ; 
         in=rs.getBinaryStream("img"); 
       } 
       catch (SQLException sqle) { 
         System.err.println("Error in CoverServlet : getCover()-" + sqle); 
         sqle.printStackTrace() ; 
       } 
       finally { 
         try { 
           pst.close() ; 
     cn.close() ; 
         } 
         catch (Exception e) { 
           e.printStackTrace(); 
         } 
       } 
       return in; 
     } 
     
     public void destroy() { 
     } 
    }  
    这里有段代码,应该可以搞定/