分享
 
 
 

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

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

我在程序代码里贴了向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来试试。

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

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有