try {
BLPrplFileUploadCollect blPrplFileUploadCollect = new BLPrplFileUploadCollect();
blPrplFileUploadCollect.query(" businessNo='周星驰'");
for (int j = 0; j < blPrplFileUploadCollect.getSize(); j++)
{
PrplFileUploadCollectSchema prplFileUploadCollectSchema = blPrplFileUploadCollect.getArr(j);
String queryString = prplFileUploadCollectSchema.getUploadServerName();
System.out.println("queryString == " + queryString);
//以上的方法是从数据库中取得图片的路径 。比如 blPrplFileUploadCollect.getSize() = 5次。此地方循环5次。
均是得到D:\loadfile\temp\2012\0000000000\201207250544308623Desert.jpg 这样的路径。 可是这样循环5次,最后得到的图片只能是第一次循环出现的结果。 queryString = “D:\loadfile\temp\2012\0000000000\201207250544308623Desert.jpg ”;
OutputStream output = response.getOutputStream();// 得到输出流
BufferedOutputStream bos = new BufferedOutputStream(output);// 输出缓冲流
FileInputStream hFile = new FileInputStream(queryString); // 以byte流的方式打开文件
int i = hFile.available(); // 得到文件大小
byte data[] = new byte[i];
int size = 0;
size = hFile.read(data);
while (size != -1) {
bos.write(data, 0, size);
size = hFile.read(data);
hFile.read(data); // 读数据
response.setContentType("image/*"); // 设置返回的文件类型
OutputStream toClient = response.getOutputStream(); // 得到向客户端输出二进制数据的对象
toClient.write(data); // 输出数据
hFile.close();
toClient.close();
}
我的问题是: 有没办法显示多张图片。这样每次只能显示第一张图片,后面的没办法显示。
或者有没有什么办法,能让图片不在servlet中显示。最好是在jsp中显示。jsp中的src 要怎么写。请指教。这个问题困挠好久了。
------解决方案--------------------------------------------------------
在jsp上写个循环,图片的名称最好相差一如,1.jpeg,2.jpeg类似,循环的时候img 的src指向xxx/循环次数.jpeg
------解决方案--------------------------------------------------------
对Servlet返回图片这个过程理解错了。
在HTML中,每一句:
<img src="imageservlet?id=xxxxoooo" />
都将独立的请求一次 imageservlet,HTTP指令类似于:
GET /context/imageservlet?id=xxxxoooo HTTP/1.0
那么这个servlet也将仅就这次请求,独立的返回一张图片的内容,servlet之内不应该有任何循环。
不知道这么说你理解不?
------解决方案--------------------------------------------------------
要循环的是 HTML 页面,而不是 Servlet。。。。
JSP中类似于:
<% while (rs.next) { %>
<img src="imageservlet?id=<%=rs.getString("ID");%>" />
<%}%>
这就形成了一组的 <img> 标签。
所以Servlet这边每次只需要处理一张。
话说,你这分数给太多了,有个20分就够了。
------解决方案--------------------------------------------------------
Servlet每次只能处理一个文件,所以外层for循环必须消灭掉。
此外关于文件输出部分也是彻底写错了。。。。
- Java code
response.setContentType("image/*"); // 设置返回的文件类型BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());// 输出缓冲流FileInputStream hFile = new FileInputStream(queryString); // 以byte流的方式打开文件try { byte data[] = new byte[8192]; int size = 0; while ((size = hFile.read(data)) != -1) { bos.write(data, 0, size); } bos.flush();} finally { hFile.close();}