我的代码如下:
    InputStream in[] = new InputStream[100];
 
    String sql="select * from Officeinsp_accessory WHERE ID = " + image_id;
    PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet rs = stmt.executeQuery(); 
int i=0;
while(rs.next()){ 
 in[i] = rs.getBlob("BINDARYFILE").getBinaryStream();
 i++;
}   
    response.reset(); 
response.setContentType("image/jpeg"); 

byte[] b = new byte[1024]; 
int len; 
for(int j=0;j<i;j++){
while((len=in[j].read(b)) >0) 
response.getOutputStream().write(b,0,len); 
}
 
for(int k=0;k<i;k++){
in[k].close();
}
    out.clear();
    out=pageContext.pushBody();
    
    rs.close();
stmt.close();
conn.close();
但是运行出来,只能显示第一张图片,有什么办法能够显示所有图片吗,在数据库中
String sql="select * from Officeinsp_accessory WHERE ID = " + image_id;
这句话是对应四张图片的,我要怎么让这四张图片都显示呢?

解决方案 »

  1.   

    while(rs.next()){ 
    //定义一个list存in数组啊
    in[i] = rs.getBlob("BINDARYFILE").getBinaryStream();
    i++;
    }
      

  2.   

    fangmingshijie
     能具体一点吗? 
      

  3.   

    我觉得你还是存图片路径,然后读取所有图片路径放入到list中传递给前端页面方便!
    或者你试试在每次传输完一个图片数据流后flush一下!
      

  4.   

    Helios_Fly
    就是想读取oracle的多张图片,看看大家有没什么办法
    “每次传输完一个图片数据流后flush一下!”这个我试了不行啊...
      

  5.   

    你把图片的路径存到数据库中不行吗?而不是存图片本身。
    然后从数据库中读取所有图片路径放入到list中传递给前端页面
    如List<String> imgPaths = new ArrayList<String>();
    在前台页面中
    <s:iterator value="imgPaths" var="image">
    <img src="<s:property value='image'/>"/>
    </s:iterator>
    这样不行吗?
      

  6.   

    兄弟,走题了。LZ是要自己写的,而不是用struct的标签。
      

  7.   

    首先要说的是,将图片存放在数据库中是不合理的!如果非要存放也可以!个人建议你用dao层实现
    PreparedStatement pstatement = null;
    String sql = "insert into t_student(photo)";
    sql += "values (?)";
       pstatement.setBlob(1, new FileInputStream(stu.getPhoto()),400000)
    还有要用Oracle的话用class.16jar,class12.jar不支持!
      

  8.   

    你这样肯定只能返回最后一张了,前台可以传一个id过来,后台根据id返回某一个图片