我没用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();    
%  >  
 

解决方案 »

  1.   

    http://expert.csdn.net/Expert/topic/1353/1353899.xml?temp=.4795191
    http://expert.csdn.net/Expert/topic/876/876147.xml?temp=2.285182E-03
      

  2.   

    http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=2844
      

  3.   

    各位,我有些疑问.
    //以流的格式赋值  
    FileInputStream  fis=new  FileInputStream(filename);  
    这是读哪里的FILE? 如果是CLIENT-->SERVER-->DATABASE的话,JSP是放在SERVER端的,我理解上面读的是SERVER端的FILE,那么客户端的FILE找不到?大虾帮忙指点!
      

  4.   

    pqds(韩富贵) ,你给的连接打不开阿
      

  5.   

    看过上面的程序,发现都是将上载的文件先以文件的方式写在服务器端,然后将文件读出写入数据库,这样做必须对读写文件同步。我的想法是将上载的文件流直接写入数据库,不生成文件。但是的分析ServletInputStream,我现在遇到了一点问题,不知该怎么解决。对于文本文件可以直接写入数据库,但是对于*.bmp文件不能。
      

  6.   

    to xchen1(孔雀王),我做的东西要求传到数据库,不是我自己练习的,呵呵。
    to echowen(振兴中华) ,我要传的可能是bmp或jpg ,你能把你现在可以传文本文件的原代码给我看看吗?[email protected],谢谢!
      

  7.   

    no one answer my question? 
    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?
      

  8.   

    多谢大家的帮助,传到数据库这个我已经搞定了
    现在有一个读出图片并显示的JSP文件,对文本可以读出,但对图片就不行,不知道是不是存入的时候有问题,要是那位大哥给一个成功的存入程序我看看就感激不尽了。:)
      

  9.   

    为什么我执行了  pqds(韩富贵) 的程序后
    出现getOutputStream()已经被调用这样的错误!