下面有个完整的使用smartupload组件上传图片的例子:
<%@   page   contentType="text/html;charset=gb2312"%>   
  <%@   page   import="java.sql.*"%>   
  <%@   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   aa=getServletContext().getRealPath("/")+"jsp\\";   
          String   trace=aa+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);   
      out.println(file.length());   
        //打开数据库   
        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,   "aaa1");   
        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对应   
  %>   
我使用这个例子实现图片上传到服务器数据库时候出现了问题。因为linux服务器有读写权限,所以无法实现:myFile.saveAs(trace,mySmartUpload.SAVE_PHYSICAL);直接报错说无法保存。
我后来修改了下程序:把这两句java.io.File   file   =   new   java.io.File(trace);   
          java.io.FileInputStream   fis   =   new   java.io.FileInputStream(file); 归为一句: java.io.FileInputStream   fis   =   new   java.io.FileInputStream(myFile);  也行不通,后来发现原因是com.jspsmart.upload.File 和 java.io.File是不同的,所以想知道有没有将com.jspsmart.upload.File 转换为java.io.File的方法?或者还有没有其他直接保存到服务器端数据库的方法,而不是先把文件上传到服务器上,然后再读进数据库。谢谢