我没用jspsmart,直接上传的:(
你可以参考!测试通过。
第一步:建立数据库
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都没有错误。icech不是很懂,都是参考别人的。
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();
% >
你可以参考!测试通过。
第一步:建立数据库
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都没有错误。icech不是很懂,都是参考别人的。
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();
% >
http://expert.csdn.net/Expert/topic/876/876147.xml?temp=2.285182E-03
//以流的格式赋值
FileInputStream fis=new FileInputStream(filename);
这是读哪里的FILE? 如果是CLIENT-->SERVER-->DATABASE的话,JSP是放在SERVER端的,我理解上面读的是SERVER端的FILE,那么客户端的FILE找不到?大虾帮忙指点!
to echowen(振兴中华) ,我要传的可能是bmp或jpg ,你能把你现在可以传文本文件的原代码给我看看吗?[email protected],谢谢!
to weil(weil) :
I think the most important of all is to understand what kind of architecture you will adopt in your application, two tier? or three tier?
现在有一个读出图片并显示的JSP文件,对文本可以读出,但对图片就不行,不知道是不是存入的时候有问题,要是那位大哥给一个成功的存入程序我看看就感激不尽了。:)
出现getOutputStream()已经被调用这样的错误!