我也试过直接将文件传到Oracle数据库,但是试了好久也没有成功,最后查了好多资料后,才发现上传的数据库的功能好像是有bug,没办法,只能先传到一个目录里,然后再向数据库里存。

解决方案 »

  1.   

    我想把多个文件的下载做成是打勾选中即可一次下载,是不是必须得修改java程序,还是直接可以用jsp实现?
      

  2.   

    <%
    out.print("请等待......");
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
    String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=student";
    //pubs为你的数据库的
    String user="sa";
    String password="";
    Connection conn= DriverManager.getConnection(url,user,password);
    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
    //TheBean.doUpload(request);
    String user_name=getStr(request.getParameter("user_name"));
    String user_class=getStr(request.getParameter("user_class"));
    //添加数据到数据库--
    String sql="select * from student_info where name='" +user_name+"' and id_class=" + user_class;
    ResultSet rs=stmt.executeQuery(sql);
    if(!rs.next())
    {
     String u = "c:\\lxxi\\";////上传软件的路径
         TheBean.setSavePath(u);
       TheBean.doUpload(request);
       out.print("<br>"+"您不是我们的学生,请先注册"+"<br>");
       out.print(user_name);
          out.print(user_class);
    }
       else
      {
      String urll = "c:\\linrui\\";////上传软件的路径
        urll+=user_name+"\\";
       TheBean.setSavePath(urll);
       TheBean.doUpload(request);
      out.println("<br>作业提交成功");
      out.println(urll);
      out.print(user_name);
          out.print(user_class);
       }
    %>
      

  3.   

    1。多个文件上传也没问题
    只要能一个个读近来就可以的
    smartupload支持过个上传
    2。多个文件的下载没有试过
    我觉得就算是过个文件下载
    也要弹出对话框询问保存的路径和名称吧
    如果这样可以的话也应该没有问题
      

  4.   

    多个文件上载到文件夹没有问题,但如果要是直接存到数据库就不行.
    meyoushe(孤独剑) :"TheBean"是jspsmartupload里的类文件吗,还是自己写的.
    如果你有完整的代码,能不能发封mail给我.
    我的地址:[email protected].
    谢谢.
      

  5.   


    多个文件上载到文件夹没有问题,但如果要是直接存到数据库就不行我的没问题
    数据库sqlserver2000
    <%@ 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对应
    %>
      

  6.   

    搞错了
    是这个:
    我刚试过了
    没有问题
    是不是你的数据表的结构的事
    比如唯一性约束什么的
    <%@ 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对应
    %>
      

  7.   

    不用他的,用自己的写数据库就成了import upload.*;
    import java.sql.*;
    import javax.servlet.jsp.PageContext;public class Upload
    {
    upload.SmartUpload smartUpload = new upload.SmartUpload();
        common.DB db = new common.DB();
        upload.File myFile; public final void initialize(PageContext pageContext)throws Exception
        {
    smartUpload.initialize(pageContext);
            smartUpload.setAllowedFilesList(syscfg.GetSys.getAllowedFilesList());
            smartUpload.setMaxFileSize(syscfg.GetSys.getMaxFileSize());
        }    public int getValue(String valueName)throws Exception
        {        String sql = "SELECT var_value FROM variables where var_name='"+valueName+"'";
            ResultSet rs = db.query(sql);
            rs.next();
            int uploadfile = rs.getInt("var_value");        sql = "update variables set var_value=var_value+1 where var_name='"+valueName+"'";
            db.query(sql);        return uploadfile;    } public String upload()throws Exception
        {
            String fileName = "";
    smartUpload.upload();
            myFile = smartUpload.getFiles().getFile(0);        if (!myFile.isMissing())
            {
                fileName = getValue("uploadfile")+"."+myFile.getFileExt();
                if(myFile.getSize()>syscfg.GetSys.getOutFileMinSize()){
    outToFile(fileName);
                }else{
    outToDB(fileName);
                }
            }
            return fileName;
        }    private void outToFile(String fileName)throws Exception
        {
    myFile.saveAs(syscfg.GetSys.getFileSavePath()+fileName);
        }    private void outToDB(String fileName)throws Exception
        {
            String sql = "insert into upload_file (filename,filesize,filecontent) values ";
    sql += "('"+fileName+"','"+myFile.getSize()+"','"+common.WordOperate.toEncoding(myFile.getContentString())+"')";        db.query(sql);
        }    public upload.File getFile()
        {
    return myFile;
        }
        public upload.Request getRequest()
        {
    return smartUpload.getRequest();
        }}
    ***************************************************
    if(myFile.getSize()>syscfg.GetSys.getOutFileMinSize()){
    这里是判断一下大小,小文件存数据库,大文件存服务器文件