JSP显示数据库图片数据问题,急啊!!

2207220 2004-08-30 04:17:39
listall.jsp

关键代码如下:
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.sql.ResultSet,java.io.InputStream,javax.servlet.ServletOutputStream"%>
......
<%
//读取数据库图片数据,并在页面显示的代码
byte[] Buffer=new byte[1024];
InputStream InData=null;
ServletOutputStream outData=null;
int iSize;
outData=response.getOutputStream();
InData=rs.getBinaryStream("fldtpxx");
response.setContentType("image/*");
while(true)
{
iSize=InData.read(Buffer);
if(iSize==-1)
{
break;
}
outData.write(Buffer,0,iSize);
}
outData.flush();
response.flushBuffer();
%></td>
</tr>
<%
if(!rs.next())
break;}
%>
其中结果集从session中取得,为什么每次运行到该页面时,都出现下载“listall.jsp”的对话框呢?
如果屏蔽了该读取数据的代码块,就能正常显示其余数据。急啊,盼望高手指点!
...全文
213 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
2207220 2004-08-31
  • 打赏
  • 举报
回复
我把 response.setContentType("image/*"); 改成 response.setContentType("image/jpeg"); 就可以了,但是这样以来整个页面只能显示图象,而之前所有的文本都不能显示了,怎么办啊?
yyqllxh2004 2004-08-31
  • 打赏
  • 举报
回复
showimg1.jsp
<html>
<body>
<img id="myPic" src="showimg.jsp" align="center" >
</body>
</html>


showimg.jsp

<%@ page language="java"%>
<%@ page import="java.util.*"%>
<%@ page import="java.text.*"%>
<%@ page import="java.lang.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.sql.*"%>
<%@ page contentType="text/html;charset=gb2312"%>
<html>
<body>
<img border ="0" align="left" src=
<%
String username= (String) session.getValue("username");
username=new String(username.getBytes("ISO8859-1"),"GBK");
String name= (String) request.getParameter("name");
name=new String(name.getBytes("ISO8859-1"),"GBK");
try {
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String url ="jdbc:mysql://192.168.1.61/AddrBook_database?user=heyi&password=123&useUnicode=true&characterEncoding=gb2312";
Connection con= DriverManager.getConnection(url);
String cmd="select Photo from IM_FriendInfo where Name ='"+name+"' and UserName='"+username+"'";
PreparedStatement sql=con.prepareStatement(cmd);
ResultSet rs = sql.executeQuery();
rs.next();
InputStream in = rs.getBinaryStream("Photo");
response.reset();
response.setContentType("image/*");
OutputStream os = response.getOutputStream();
byte[] b = new byte[1024];
int len;
while((len=in.read(b,0,b.length)) >0)
os.write(b,0,len);
os.flush();
in.close();
}
catch(Exception e)
{out.println(e);}
%>
>
</body>
</html>
vision2000 2004-08-31
  • 打赏
  • 举报
回复
outData.flush();
response.flushBuffer();
放在while外面看看。
xiangbo520 2004-08-31
  • 打赏
  • 举报
回复
在JSP中输出图象只能response.setContentType("image/jpeg");或者其他类型,不能将图片和其他文本混合输出,也就是说图象只能由单独的JSP输出,ASP,ASP.NET,PHP,不管是什么,只要是WEB程序,动态输出图象只能由单独的文件输出。
你可以在一个页面里面对图片输出文件使用
<img src="pic.jsp" width="20" height="25">来显示pic.jsp输出的图象。
2207220 2004-08-30
  • 打赏
  • 举报
回复
对了,我是在tomcat4和 jbx下进行的

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧