//------------------------------//
1表结构
//------------------------------//create  table  test_img(id  number(4),name  varchar(20),img  long  raw,primary key(id));//------------------------------//
2(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><br>
<input  type="submit"  value="上传"  name="submit"  size="25">
<input  type="reset"  value="清除"  name="clear"  size="25">
</form>
</body>
</html>//------------------------------//
3(InsertImg.jsp)
//------------------------------//<%@ page import="java.io.*"%><%//连接数据库(直连)
Class.forName("oracle.jdbc.driver.OracleDriver");
String  url="jdbc:oracle:thin:@docusoft-lzk:1521:lzk";
Connection  con=DriverManager.getConnection(url,"test","include");//插入数据库
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!!!");
%>//------------------------------//
4(ShowImg.jsp)
//------------------------------//<%@ page contentType="text/html;charset=gb2312"%>
<%@ page language="java" import="java.sql.*"%>
<%@ page import="java.io.*"%>
<%
Class.forName("oracle.jdbc.driver.OracleDriver");
String  url="jdbc:oracle:thin:@docusoft-lzk:1521:lzk";
Connection  con=DriverManager.getConnection(url,"test","include");String image_id = (String)  request.getParameter("ID");
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();
%>//------------------------------//
5(ListImg.jsp)
//------------------------------//<%@ page contentType="text/html;charset=gb2312"%>
<%@ page language="java" import="java.sql.*"%>
<%@ page import="java.io.*"%>
<%
Class.forName("oracle.jdbc.driver.OracleDriver");
String  url="jdbc:oracle:thin:@docusoft-lzk:1521:lzk";
Connection  con=DriverManager.getConnection(url,"test","include");
PreparedStatement sql=con.prepareStatement("select ID,NAME  from  test_img");
ResultSet rs = sql.executeQuery();
%>
<html>
<head>
<title>图片阅览</title>
</head>
<body>
<table width="75%" border="1">
<%
while(rs.next())
{
String ID = rs.getString(1);
out.println("<tr>");
out.println("<td>" + ID + "</td>");
out.println("<td>" + rs.getString(2) + "</td>");
out.println("<td><img src=\"ShowImg.jsp?ID=" + ID + "\"></td>");
out.println("</tr>");
}
%>
</table>
</body>
</html>

解决方案 »

  1.   

    http://www.chinabs.net/jsp/default.asp?infoid=306
      

  2.   

    http://www.tongyi.net/article/20031015/200310153755.shtml
      

  3.   

    刚想贴,居然发现在楼上已经贴了。为了强调它的经典,再贴一次。
    http://www.tongyi.net/article/20031015/200310153755.shtml
      

  4.   

    smartupload
    http://www.tongyi.net/article/20031015/200310153755.shtml
    将“流氓无赖”测试到底
    ——始于2003年7月
    树欲止而风不停,行云流水匆匆去;
    树梢蚂蚱凭空望,江边浪花碎巨石; 支持“流金岁月”!!!
    ——2003年12月24日am^@^
      

  5.   


    上传:Example4_13.jsp:
    <%@ page contentType="text/html;charset=GB2312" %>
    <HTML>
    <BODY>
     <P>选择要上传的文件:<BR>
       <FORM action="accept.jsp" method="post" ENCTYPE="multipart/form-data">
          <INPUT type=FILE name="boy" size="38"> 
          <BR>
         <INPUT type="submit" name ="g" value="提交">  
     </BODY>
    </HTML>accept.jsp:
    <%@ page contentType="text/html;charset=GB2312" %>
    <%@ page import ="java.io.*" %>
    <HTML>
    <BODY>
      <%try{  InputStream in=request.getInputStream();
              File f=new File("F:/2000","B.txt");
              FileOutputStream o=new FileOutputStream(f);
              byte b[]=new byte[1000];
              int n;
              while((n=in.read(b))!=-1)
                   {o.write(b,0,n);
                   }
              o.close();
              in.close();
           }
        catch(IOException ee){}
        out.print("文件已上传");
      %> 
    </BODY>
    </HTML>例子14(效果如图4.21、4.22、4.23所示)
    Example4_14.jsp:
    <%@ page contentType="text/html;charset=GB2312" %>
    <HTML>
    <BODY>
    <% String str=response.encodeURL("acceptFile.jsp");
    %>
     <P>选择要上传的文件:<BR>
       <FORM action="<%=str %>" method="post" ENCTYPE="multipart/form-data">
          <INPUT type=FILE name="boy" size="45"> 
          <BR> <INPUT type="submit" name ="g" value="提交">
    </FORM>
     </BODY>
    </HTML>
    acceptFile.jsp:
    <%@ page contentType="text/html;charset=GB2312" %>
    <%@ page import ="java.io.*" %>
    <HTML>
    <BODY>
      <%try{  //用客户的session的id建立一个临时文件:
              String tempFileName=(String)session.getId();
              //建立临时文件f1:
              File f1=new File("D:/Tomcat/jakarta-tomcat-4.0/webapps/examples/",tempFileName);
              FileOutputStream o=new FileOutputStream(f1);
               //将客户上传的全部信息存入f1:
              InputStream in=request.getInputStream();
              byte b[]=new byte[10000];
              int n;
                 while( (n=in.read(b))!=-1)
                     {o.write(b,0,n);
                     }
                o.close();in.close();
              //读取临时文件f1,从中获取上传文件的名字,和上传的文件的内容:
               RandomAccessFile random=new RandomAccessFile(f1,"r");
               //读出f1的第2行,析取出上传文件的名字:
                  int second=1;
                  String secondLine=null;
                  while(second<=2)  
                      {secondLine=random.readLine();
                       second++;
                      }
               //获取第2行中目录符号'\'最后出现的位置
                   int position=secondLine.lastIndexOf('\\');
               //客户上传的文件的名字是:
                 String fileName=secondLine.substring(position+1,secondLine.length()-1);
                 random.seek(0); //再定位到文件f1的开头。
                 //获取第4行回车符号的位置: 
                 long  forthEndPosition=0;
                 int forth=1;
                  while((n=random.readByte())!=-1&&(forth<=4))  
                      { if(n=='\n')
                          { forthEndPosition=random.getFilePointer();
                            forth++;
                          }
                      }
                  //根据客户上传文件的名字,将该文件存入磁盘:
                  File f2=new File("D:/Tomcat/jakarta-tomcat-4.0/webapps/examples/",fileName);
                  session.setAttribute("Name",fileName);//供showImage.jsp页面使用。
                  RandomAccessFile random2=new RandomAccessFile(f2,"rw"); 
                  //确定出文件f1中包含客户上传的文件的内容的最后位置,即倒数第6行。
                  random.seek(random.length());
                  long endPosition=random.getFilePointer();
                  long =endPosition;
                  int j=1;
                  while((>=0)&&(j<=6))  
                      {  --;
                         random.seek();
                         n=random.readByte();
                         if(n=='\n')
                          { endPosition=random.getFilePointer();
                             j++;
                          }
                      }
                 //将random流指向文件f1的第4行结束的位置:
                  random.seek(forthEndPosition);
                  long startPoint=random.getFilePointer();
              //从f1读出客户上传的文件存入f2(读取从第4行结束位置和倒数第6行之间的内容)。
                  while(startPoint<endPosition-1)
                       { n=random.readByte();
                         random2.write(n); 
                         startPoint=random.getFilePointer();
                       }
                random2.close();random.close();
                f1.delete(); //删除临时文件
           }
        catch(IOException ee){}
          out.print("文件已上传");
      %> 
      <P> 查看上传的图象效果
    <%String str=response.encodeURL("showImage.jsp");
    %>
      <FORM action="<%=str%>">
       <Input type=submit value="查看">
      </FOrm >
    </BODY>
    </HTML>
    showImage.jsp:
    <HTML>
    <BODY>
    <% String name=(String)session.getAttribute("Name");
         if(name==null)
           {name="";
           }
       out.print("<image src=http://192.168.1.100:8080/examples/"+name);
    %>
    </BODY>
    </HTML>
      

  6.   

    jspsmartupload
    里面有例子!