JSP图片的读写操作

图片存取
本文介绍了一种使用Oracle数据库存储和检索图片的方法。通过创建包含图片字段的表,利用JSP实现图片上传并保存到数据库,最后从数据库中读取图片并在网页上显示。

第一步:建立数据库:

create table test_img(id number(4),name varchar(20),img long raw);

 第二步:图片上传单元(NewImg.html)

<html><head><title>添加图片</title></head> 
<body> 
添加图片
<br/> 
<form method="post" action="insertNews.jsp"> 
图像ID:
<input name="id" size="10"> 
<br/> 
选择图像:
<input type="file" name="image"> 
<br/> 
<input type="submit" value="上传" name="submit" size="25"> 
<input type="reset" value="清除" name="clear" size="25"> 
<br/> 
</form> 
</body></html> 

第三步:保存到数据库(InsertImg.jsp)

 

<%@ page language="java"%> 
<%@ page contentType="text/html;charset=gb2312" %> 
<%@ page import="java.util.*" %> 
<%@ page import="java.sql.*"%> 
<%@ page import="java.text.*"%> 
<%@ page import="java.io.*"%> 
<% 
Class.forName(
"oracle.jdbc.driver.OracleDriver"); 
String url
="jdbc:oracle:thin:@lubin:1521:b2bdb"
Connection con
=DriverManager.getConnection(url,"demo","demo"); 
//插入数据库 
String sql="insert into test_img values (?,?,?)"
//获取传值ID 
String id=request.getParameter("id"); 
//获取image的路径 
String kk=request.getParameter("image"); 
//转换成file格式 
File filename=new File(kk); 
//将文件的长度读出,并转换成Long型 
long l1=filename.length(); 
int l2=(int)l1; 
//以流的格式赋值 
FileInputStream fis=new FileInputStream(filename); 
PreparedStatement ps 
=con.prepareStatement(sql); 
ps.setString(
1,id); 
ps.setString(
2,filename.getName()); 
ps.setBinaryStream(
3,fis,l2); 
//ps.setBinaryStream(3,fis,fis.available()); 
ps.executeUpdate(); 
//ps.execute(); 
ps.close(); 
fis.close(); 
out.println(
"ok!!!"); 
%> 

第四步:显示图片(ShowImg.jsp)

 

<%@ page language="java" import="java.sql.*"%> 
<%@ page import="java.io.*"%> 
<%@ page contentType="text/html;charset=gb2312"%> 
<% 
Class.forName(
"oracle.jdbc.driver.OracleDriver"); 
String url
="jdbc:oracle:thin:@lubin:1521:b2bdb"
String image_id 
= (String) request.getParameter("ID"); 
Connection con
=DriverManager.getConnection(url,"demo","demo"); 
PreparedStatement sql
=con.prepareStatement("select * from test_img WHERE id = " + image_id); 
ResultSet rs 
= sql.executeQuery(); 
rs.next(); 
//输入img字段内容到in 
InputStream in = rs.getBinaryStream("img"); 
//以下可是任何处理,比如向页面输出: 
response.reset(); 
//此处的image/jpeg似乎与显示的图片格式无关 
//因为我显示jsp和gif都没有错误。
response.setContentType("image/jpeg"); 
byte[] b = new byte[1024]; 
int len; 
while((len=in.read(b)) >0
response.getOutputStream().write(b,
0,len); 
in.close(); 
rs.close(); 
%>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值