数据库里存储的图片字段定义类型为blob,java里对应的类型为byte[],怎么将图片显示到jsp页面??
如题。参考:其他字段如String型<td><s:propertyvalue="picName"/></td>Date型:<td><s:propertyvalue="%{...
如题。参考:其他字段如String型<td><s:property value="picName"/></td>
Date型:<td><s:property value="%{#util.dateToString(createDate)}"/></td>
(注明date型里是调了一个类型转换方法,就是blob不知道怎么转换才能这样显示出来) 展开
Date型:<td><s:property value="%{#util.dateToString(createDate)}"/></td>
(注明date型里是调了一个类型转换方法,就是blob不知道怎么转换才能这样显示出来) 展开
2013-06-08
展开全部
我把我以前收集的给你贴出来,希望能对你有所帮助
jsp编程从数据库中取出图片
1、读取图片数据testimageout.jsp文件
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.text.*" %>
<%@ page import="java.io.*" %>
<html>
<body>
<%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:denglu","sa","sa");
Statement stmt=con.createStatement();
ResultSet rs=null;
int id=Integer.parseInt(request.getParameter("id"));
String sql = "select image from picturenews where id='"+id+"'";
rs=stmt.executeQuery(sql);
while(rs.next())
{
ServletOutputStream sout = response.getOutputStream();
InputStream in = rs.getBinaryStream(1);
byte b[] = new byte[0x7a120];
for(int i = in.read(b);i!=-1)
{
sout.write(b);
in.read(b);
}
sout.flush();
sout.close();
}
%>
<body>
</html>
2、取出所要显示的图片showimage.jsp文件
<%@ page contentType="text/html;charset=bg2312"%>
<%@ page import="java.sql.*" %>
<html>
<head>
<title>显示数据库图片测试页</title>
</head>
<body>
<%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:denglu","sa","sa");
Statement stmt=con.createStatement();
String sql=new String();
sql = "select id from picturenews";
ResultSet rs=stmt.executeQuery(sql);
//显示最后一条记录的图片
rs.last();
%>
<table>
<tr><td><img src='testimageout.jsp?id=<%=rs.getInt("id")%>'></td></tr>
</table>
</body>
</html>
jsp编程从数据库中取出图片
1、读取图片数据testimageout.jsp文件
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.text.*" %>
<%@ page import="java.io.*" %>
<html>
<body>
<%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:denglu","sa","sa");
Statement stmt=con.createStatement();
ResultSet rs=null;
int id=Integer.parseInt(request.getParameter("id"));
String sql = "select image from picturenews where id='"+id+"'";
rs=stmt.executeQuery(sql);
while(rs.next())
{
ServletOutputStream sout = response.getOutputStream();
InputStream in = rs.getBinaryStream(1);
byte b[] = new byte[0x7a120];
for(int i = in.read(b);i!=-1)
{
sout.write(b);
in.read(b);
}
sout.flush();
sout.close();
}
%>
<body>
</html>
2、取出所要显示的图片showimage.jsp文件
<%@ page contentType="text/html;charset=bg2312"%>
<%@ page import="java.sql.*" %>
<html>
<head>
<title>显示数据库图片测试页</title>
</head>
<body>
<%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:denglu","sa","sa");
Statement stmt=con.createStatement();
String sql=new String();
sql = "select id from picturenews";
ResultSet rs=stmt.executeQuery(sql);
//显示最后一条记录的图片
rs.last();
%>
<table>
<tr><td><img src='testimageout.jsp?id=<%=rs.getInt("id")%>'></td></tr>
</table>
</body>
</html>
2013-06-08
展开全部
这个试下吧.
....
<body>
<%
//获取图片对象(根据主键)的sql语句
String showImage = " select * "+
" from 存放图片的表 "+
" where id='1' " ;
BufferedInputStream inputImage = null;
try{
//conn为一个Connection对象
Statement st = conn.createStatement();
//获取结果集
ResultSet rs=st.executeQuery(showImage);
//输出文件名
String filename="";
if(rs.next()) {
Blob blob = (Blob)rs.getBlob("BINARYFILE");
filename=rs.getString("FILENAME");
//读取图片字节到数据流中
inputImage = new BufferedInputStream(blob.getBinaryStream());
}
BufferedImage image = null;
image=ImageIO.read(inputImage);
//获取响应的输出流
ServletOutputStream so = response.getOutputStream();
//创建图片到页面
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(so);
encoder.encode(image);
inputImage.close();
}
%>
</body>
<%
catch(Exception e){
}
finally{
closeConn(conn);
}
%>
....
<body>
<%
//获取图片对象(根据主键)的sql语句
String showImage = " select * "+
" from 存放图片的表 "+
" where id='1' " ;
BufferedInputStream inputImage = null;
try{
//conn为一个Connection对象
Statement st = conn.createStatement();
//获取结果集
ResultSet rs=st.executeQuery(showImage);
//输出文件名
String filename="";
if(rs.next()) {
Blob blob = (Blob)rs.getBlob("BINARYFILE");
filename=rs.getString("FILENAME");
//读取图片字节到数据流中
inputImage = new BufferedInputStream(blob.getBinaryStream());
}
BufferedImage image = null;
image=ImageIO.read(inputImage);
//获取响应的输出流
ServletOutputStream so = response.getOutputStream();
//创建图片到页面
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(so);
encoder.encode(image);
inputImage.close();
}
%>
</body>
<%
catch(Exception e){
}
finally{
closeConn(conn);
}
%>
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-06-08
展开全部
用AppendChunk和GetChunk方法可以存取或用ADO2.5的Stream对象。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-06-08
展开全部
用流还原文件显示。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-06-08
展开全部
图片通常都是放一个链接到数据库里,很少有直接放图片到数据库
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |