
环境mysql+tomcat:
<1>先在mysql下建立如下的table. 并insert图像
mysql.sql文件如下:
CREATE TABLE photo (
photo_no int(6) unsigned NOT NULL auto_increment,
image blob,
PRIMARY KEY (`photo_no`)
)
<2>把show.jsp放在tomcat的任意目录下. show.jsp作用:从数据库中读出blob,并产生image/jpg.
show.jsp文件如下:
<%@ page contentType="text/htmlcharset=gbk" %>
<%@ page import="java.io.*"%>
<%@ page import="java.sql.*, javax.sql.*" %>
<%@ page import="java.util.*"%>
<%@ page import="java.math.*"%>
<%
String photo_no = request.getParameter("photo_no")
//mysql连接
Class.forName("com.mysql.jdbc.Driver").newInstance()
String URL="jdbc:mysql://localhost:3306/job?user=root&password=111111"
Connection con = DriverManager.getConnection(URL)
//oracle连接
//String URL="jdbc:oracle:thin@localhost:1521:orcl2"
//user="system"
//password="manager"
//Connection con = DriverManager.getConnection(URL,user,password)
try{
// 准备语句执行对象
Statement stmt = con.createStatement()
String sql = " SELECT * FROM PHOTO WHERE photo_no = "+ photo_no
ResultSet rs = stmt.executeQuery(sql)
if (rs.next()) {
Blob b = rs.getBlob("photo_image")
long size = b.length()
//out.print(size)
byte[] bs = b.getBytes(1, (int)size)
response.setContentType("image/jpeg")
OutputStream outs = response.getOutputStream()
outs.write(bs)
outs.flush()
rs.close()
}
else {
rs.close()
response.sendRedirect("./images/error.gif")
}
}
finally{
con.close()
}
%>
<3>把如下文件放在show.jsp的同一目录下.
index.html文件如下:
<HTML>
<HEAD>
<TITLE>图像测试 </TITLE>
</HEAD>
<BODY>
<TABLE>
<TR>
<TD>图像测试</TD>
</TR>
<TR>
<TD><img src="show.jsp?photo_no=2"></TD>
</TR>
</TABLE>
</BODY>
</HTML>
数据库不能保存图像,但是能保存图像名,我给你个思路,用户上传后使用uid方法将图片重命名,然后将新的名称存在数据库,图片保存在一个已知路径,然后页面加载只需要将图片src设置成"路径/数据库查询结果。(建议通过id查询)"....首先..可以选择Apache里面的upload包....这个是把文件传到服务器上的上传组件....然后是存到数据库里....那就要看你什么数据库了....比如Oracle..就是Blob至Access...就是对象
字段....存取方法都是不一样的..要分别对待
有个通用方法,你找到图片文件之后,建立输入流,然后创建bytearrayoutputstream,然后从输入流中读字节到后面那个流中,并冲它里面产生字节数组保存到byte字段中
其实建议你不要将图片直接上传到数据库
图片上传到数据库要用到
blob大对象(以oracle为例),这样影响程序性能,你可以将图片上传到指定文件夹,同时将图片保存的路径+文件名上传到数据库,要显示就读取这个这个路径找到图片,然后显示.刚做了个这个代码
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)