回 帖 发 新 帖 刷新版面

主题:请问图片传送问题

想重服务器的数据库获取图片然后传送到客户端


    
    public Object getImage(String order_id) throws java.rmi.RemoteException
    {
        Object imageObj =null;
        ObjectInputStream ois = null;
        try
        {
            Connection conn =DriverManager.getConnection(url,user,DBpass);
            Statement stmt =conn.createStatement();
            stmt=conn.createStatement();    
            String sql = "select * from picture where order_id="+"'"+order_id+"'"+";";
            ResultSet    rs = stmt.executeQuery(sql);
          while(rs.next())
          {
                  Blob image = rs.getBlob("product_image"); 
                  InputStream fin = image.getBinaryStream();
                 ois =new ObjectInputStream(fin);
                imageObj = ois.readObject();
                System.out.println(ois);                
          }
          ois.close();
          rs.close();
          stmt.close();
          conn.close();
          
        }catch(SQLException e)
        {
            System.out.println("SQLException: " + e.getMessage());
              System.out.println("SQLState:     " + e.getSQLState());
              System.out.println("VendorError:  " + e.getErrorCode());
          }
          catch(Exception e)
          {
              System.out.println(e);
          }      

        
          return imageObj;
    }
    
会出现错误 
java.io.StreamCorruptedException: invalid stream header: FFD8FFE0

回复列表 (共1个回复)

沙发


问题已经解决  给大家参考
// 从数据库获取图片然后转换成 BYTE[]
public byte[] getImage(String order_id) throws java.rmi.RemoteException
    {
         byte[] myData = null;  

        try
        {
            Connection conn =DriverManager.getConnection(url,user,DBpass);
            Statement stmt =conn.createStatement();
            stmt=conn.createStatement();    
            String sql = "select * from picture where order_id="+"'"+order_id+"'"+";";
            ResultSet    rs = stmt.executeQuery(sql);
          while(rs.next())
          {
                   Blob image = rs.getBlob("product_image");
                   InputStream fin = image.getBinaryStream(); 
                 
                     ByteArrayOutputStream byteArray = new ByteArrayOutputStream(); 
                     int ch = 0; 
                     while ((ch = fin.read()) != -1) 
                     { 
                         byteArray.write(ch); 
                     } 
                     myData = byteArray.toByteArray(); 

          }
          rs.close();
          stmt.close();
          conn.close();
          
        }catch(SQLException e)
        {
            System.out.println("SQLException: " + e.getMessage());
              System.out.println("SQLState:     " + e.getSQLState());
              System.out.println("VendorError:  " + e.getErrorCode());
          }
          catch(Exception e)
          {
              System.out.println(e);
          }
        
          return myData; 
    }

客户端 
接受byte[] 转换回去IMAGE 
    public void setImageData()
     {
            byte[] imgb =null;
        
    //    InputStream fin;
         try
        { 
            ROSInterface ros = (ROSInterface) Naming.lookup("rmi://192.168.1.100/ROSServer");
            imgb=ros.getImage(getOrderId());
        //    fin=ros.getImage(getOrderId());
            img=Toolkit.getDefaultToolkit().createImage(imgb, 0,imgb.length); 

            

        }    
        catch(Exception e)
        {
            System.out.println("Image exception : ");
            e.printStackTrace();
            
        }
    }

我来回复

您尚未登录,请登录后再回复。点此登录或注册