<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.lang.*" %>
<%@ page import="com.jspsmart.upload.*" %>
<%@ page import="DBstep.iDBManager2000.*"%>
<%
    //实例化上载bean
    com.jspsmart.upload.SmartUpload mySmartUpload=new com.jspsmart.upload.SmartUpload();
    //初始化
    mySmartUpload.initialize(pageContext);
    //设置上载的最大值
    mySmartUpload.setMaxFileSize(500 * 1024*1024);
    //上载文件
    mySmartUpload.upload();
   //循环取得所有上载的文件
   for (int i=0;i<mySmartUpload.getFiles().getCount();i++){
   //取得上载的文件
   com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(i);
   if (!myFile.isMissing())
    {
   //取得上载的文件的文件名
    String myFileName=myFile.getFileName();
    //取得不带后缀的文件名
    String  suffix=myFileName.substring(0,myFileName.lastIndexOf('.'));
    //取得后缀名
    String  ext= mySmartUpload.getFiles().getFile(0).getFileExt();  
    //取得文件的大小  
    int fileSize=myFile.getSize();
    //保存路径
    String trace="c:/"+myFileName;
    //取得别的参数
    String explain=(String)mySmartUpload.getRequest().getParameter("text");
    String send=(String)mySmartUpload.getRequest().getParameter("send");
    //将文件保存在服务器端 
    myFile.saveAs(trace,mySmartUpload.SAVE_PHYSICAL);
    //下面的是将上载的文件保存到数据库中
    //将文件读到流中 
    java.io.File file = new java.io.File(trace);
    java.io.FileInputStream fis = new java.io.FileInputStream(file);
   //打开数据库
   ResultSet result=null;
   String mSql=null;
   PreparedStatement prestmt=null; 
   DBstep.iDBManager2000 DbaObj=new DBstep.iDBManager2000();
   DbaObj.OpenConnection();
   //将文件写到数据库中
   mSql="insert into list (name,password,size,date,MarkBody) values (?,?,?,?,?)";
   prestmt =DbaObj.Conn.prepareStatement(mSql);
   prestmt.setString(1, "aaa");
   prestmt.setString(2, "0000");
   prestmt.setInt(3, fileSize);
   prestmt.setString(4, DbaObj.GetDateTime());
   prestmt.setBinaryStream(5,fis,(int)file.length());
   DbaObj.Conn.setAutoCommit(true) ;
   prestmt.executeUpdate();
   DbaObj.Conn.commit();
   out.println(("上载成功!!!").toString());
   }
   else 
   { out.println(("上载失败!!!").toString()); } 
   }//与前面的if对应
%>

解决方案 »

  1.   

    from 21cn 现在JSP被越来越多的人应用在后台程序的开发及动态网页的制作上了,今天就来介绍一下如何用JSP来实现文件的上载。   一、RFC1867规范   在过去的Html中,表单不能实现文件的上传,这多少限制了一些网页的功能。RFC1867规范(即Html中实现基于表单的文件上传)对表单作出了扩展,增加了一个表单元素&:ltinput type=file>。通过使用这个元素,浏览器会自动生成一个输入框和一个按钮,输入框可供用户填写本地的文件名和路径名,按钮可以让浏览器打开一个文件选择框供用户选择文件。具体的表单实现如下:   <FORM ACTION=upload.jsp ENCTYPE=″multipart/form-data″ METHOD=POST> 
      Please input your name 
      <input type=text name=user><br> Please give us the file 
      <INPUT TYPE=FILE NAME=file1> 
      <input type=submit value=″Send file″>
      </FORM>   特别需要指出的是,只有Netscape 3和IE3.02以后的版本才支持此规范,而且我们实践下来发现文件选择按钮是浏览器自动生成的,因而按钮的文字和浏览器版本有很大的关系,如果是中文的IE,按钮的文字是“打开...”;英文的Netscape则显示“Browse...”;如果是Opera,则只有″...″。用户没办法自己设定按钮文字,不能不说是一种遗憾。除了浏览器,网络服务器也要能支持此规范,好在现在市面上绝大部分服务器软件都没有问题,微软的IIS在增加一个插件后也能很好地支持此规范。   二、组件的安装   在用户端实现文件上传后,就要用JSP来处理用户的上传请求。我们可以去www.jspsmart.com下载一个免费的组件来实现这一功能。在安装之前先确认你的JSP服务器软件支持JDK1.2.2和JSP1.1,然后只要在Server的class路径中加入该组件所在的目录就可以了。   三、程序实现   1.文件上传   <%@ page language=″java″ import=″com.jspsmart.upload.″%> 
       <HTML> 
       <BODY BGCOLOR=″white″>
       <H1>jspSmartUpload </H1>
       <HR> 
       <% int count=0 //设置变量 SmartUpload mySmartUpload=new SmartUpload
     mySmartUpload.initializepageContext //初始化 
       mySmartUpload.upload //上传 ry
      count = mySmartUpload.save″/upload″ //把上传的文件保存在/upload目录下 out.printlncount + ″ files uploaded.″ //显示上传了多少个文件 
       catch Exception e  out.printlne.toString %>
       </BODY>
       </HTML>   需要注意:调试的时候要确认上传文件所存储的目录有可写属性。   2.表单处理   由于上传文件的表单使用了 ENCTYPE=″multipart/form-data″属性,所以在JSP中处理表单传递的值的时候不能再简单地使用request.getParameter了,而应该这样来处理:   <%@ page language=″java″ import=″com.jspsmart.upload.″%> 
       <HTML>
       <BODY BGCOLOR=″white″> 
       <H1>jspSmartUpload </H1>
       <HR>
       <% SmartUpload myUpload=new SmartUpload myUpload.initializepageContext myUpload.upload out.println″Number of files = ″ + myUpload.getFiles.getCount + ″<BR>″ out.println″
       <BR>
       <BR>
       <STRONG>Display information about Requests</STRONG>
       <BR>″
       String[ ]values = myUpload.getRequest
    .getParameterValues″formtag″ //formtag为表单中元素的name,返回的值为字符数组中第一个元素。 out.printkey + ″ = ″+values0
     %> 
       </body>
       </html>   3.其他API myUpLoad.setAllowedFilesList″txtdocxls″ 设定可以上传的文件的后缀名; myUpLoad.setDeniedFilesList″batexecomjsp″ 设定不能上传的文件的后缀名;   myUpLoad.setMaxFileSize100000设定单个文件的最大字节数;   myUpLoad.setTotalMaxFileSize100000 设定所有上传文件的最大字节数;   myUpload.uploadInFile″/myData.txt″ 把表单的内容全部存储到myData.txt保存;   myUpload.getFiles.getCount 获得上传的文件的个数;   myUpload.getFiles.getSize 获得上传的文件的总字节数;   myUpload.getFiles.getFileid.getFileName 获得指定ID号文件的文件名;   myUpload.getFiles.getFileid.getFilePathName 获得指定ID号文件的路径名;   myUpLoad.getFiles.getFile0.isMissing 返回一布尔值以确定用户是否上传了文件。   四、其他功能 JspSmartUpload除了能把上传文件保存到硬盘,还能直接把文件插入到数据库,同时还能实现文件下载的功能,相信随着大家的深入研究,一定能将这一功能更好地应用到自己的实践中去
      

  2.   

    下载的<%@ page language="java" import="com.jspsmart.upload.*"%><jsp:useBean id="mySmartUpload" scope="page" class="com.jspsmart.upload.SmartUpload" /><%

    // Initialization
    mySmartUpload.initialize(pageContext);

    // Download file
    mySmartUpload.downloadFile("/upload/sample.zip");

    // With a physical path
    // mySmartUpload.downloadFile("c:\\temp\\sample.zip")

    // With options
    // mySmartUpload.downloadFile("/upload/sample.zip","application/x-zip-compressed","downloaded.zip")%>
      

  3.   

    这个不是Smartupload的事情,插入到数据库是JDBC的活啊!!upload只是关你把上传的文件处理成File对象而已
      

  4.   

    哈哈!希望楼主看看它自己的例子!里面就有你的解方案!
    具体是jspSmartupload 里面带的sample5.html !