请问为什么输出MYSQL中的图片(BLOB)只能显示一张呢?(结果集中的第一条)

请高手指点一下这样才能将所有记录的内容显示出来!

<%@page contentType="text/html;charset=GBK" pageEncoding="GBK"%>
<%@page import ="java.util.*,java.sql.*,java.text.*,java.io.*,javax.sql.*"%>
<%

Connection conn =null;
Statement stmt=null;
ResultSet rs=null;

Class.forName("com.mysql.jdbc.Driver").newInstance();
conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/first","root","110541129");
stmt=conn.createStatement();
rs=stmt.executeQuery("select * from picture where name='车2'");
while(rs.next())
{
Blob b = rs.getBlob(2);
int size =(int)b.length();
out.print(size);
InputStream in=b.getBinaryStream();
byte[] by= new byte[size];
response.setContentType("image/jpeg");
OutputStream sos = response.getOutputStream();
int bytesRead = 0;
while ((bytesRead = in.read(by)) != -1) {
//out.print(new String(by));
sos.write(by, 0, bytesRead);
}
in.close();
sos.flush();
}

%>
最新回答
深蓝菇凉

2024-06-25 11:40:03

你这样当然只能显示一张,因为你这样输出相当于把多张图片连接为一个文件,显示肯定只有一张,因为图片是有文件头的,文件头里面指定图片的幅度等属性,后面添加的文件都是不显示的,相当于垃圾数据。

采用response.setContentType("image/jpeg"); 的脚本一次只能输出一个图片,要输出多个图片,必须用另外的脚本多次调用这个脚本:
<img src=pic.jsp?name=xxx><img src=pic.jsp?name=yyy>
月藏星匿

2024-06-25 13:27:47

你那个SQL语句选出name是“车二”的图片,那么叫车二的是不是就一张呢?如果你想查找包含“车二”或是以“车二”打头的就要用模糊查询。
另外显示图片我一般都做成一个函数,然后传入ID显示图片(当然每次显示图片的时候都要setContentType)。像你这样一次性向浏览器输出多幅图片,我怀疑不可以。