一个向数据库存取image文件的jsp程序

王朝java/jsp·作者佚名  2006-12-16
窄屏简体版  字體: |||超大  

我在程序代码里贴了向Mysql数据库写入image代码的程序,可是好多人都是Java的初学者,对于这段代码,他们无法将它转换成jsp,所以我在这在写一下用jsp怎样向数据库写入图像文件。大家先在数据库建这样一张表,我下面的这些代码对任何数据库都通用,只要支持blob类型的

只要大家将连接数据库的参数改一下就可以了。

SQL>create table image(id int,content varchar(200),image blob);

如果在sqlserver2000的数据库中,可以将blob字段换为image类型,这在SqlServer2000中是新增的。

testimage.html文件内容如下:

<HTML>

<HEAD>

<TITLE>Image File </TITLE>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

</HEAD>

<FORM METHOD=POST ACTION="testimage.jsp">

<INPUT TYPE="text" NAME="content"><BR>

<INPUT TYPE="file" NAME="image"><BR>

<INPUT TYPE="submit"></FORM>

<BODY>

</BODY>

</HTML>

我们在Form的action里定义了一个动作testimage.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("org.gjt.mm.mysql.Driver").newInstance();

String url="jdbc:mysql://localhost/mysql?user=root&password=&useUnicode=true&characterEncoding=8859_1";

//其中mysql为你数据库的名字,user为你连接数据库的用户,password为你连接数据库用户的密码,可自己改

Connection conn= DriverManager.getConnection(url);

String content=request.getParameter("content");

String filename=request.getParameter("image");

FileInputStream str=new FileInputStream(filename);

String sql="insert into test(id,content,image) values(1,?,?)";

PreparedStatement pstmt=dbconn.conn.prepareStatement(sql);

pstmt.setString(1,content);

pstmt.setBinaryStream(2,str,str.available());

pstmt.execute();

out.println("Success,You Have Insert an Image Successfully");

%>

下面我写一个测试image输出的例子看我们上面程序写的对不对,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("org.gjt.mm.mysql.Driver").newInstance();

String url="jdbc:mysql://localhost/mysql?user=root&password=&useUnicode=true&characterEncoding=8859_1";

//其中mysql为你数据库的名字,user为你连接数据库的用户,password为你连接数据库用户的密码,可自己改

Connection conn= DriverManager.getConnection(url);

String sql = "select image from test where id=1";

Statement stmt=null;

ResultSet rs=null;

try{

stmt=conn.createStatement();

rs=stmt.executeQuery(sql);

}catch(SQLException e){}

try {

while(rs.next()) {

res.setContentType("image/jpeg");

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();

}

}

catch(Exception e){System.out.println(e);}

%>

</body>

</html>

你运行这个程序,你就会看到刚才你写入美丽的图片就会显示在你面前。怎么样,用jsp来试试。

这种方法把图片写到数据库中会使数据库在短时间内容量飞涨,会影响性能的,另外一种做法将图片存上传到服务器上,

在数据库里只存放图片的路径,这是一个很好的方法。我建议大家采取后面一种方法。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航