在网上看了2天例子。大多是上传处理直接在jsp页面实现的。
我现在要做的是前台提交表单到mainservlet.
if(strUrl.equals("upload.html"))
{
UploadServlet.MyUpload(request,response);
}
将smartupload放在一个包里。在UploadServlet中调用
但是,我搞不懂的是:smartupload的初始化语句里su.initialize(pageContext);pageContext如何取到?因为是放在Servlet里处理,所以写在JSP的语句肯定不能通用。有没有人做过这方面的工作?请指点下如何在servlet里实现smartupload的功能。谢谢。

解决方案 »

  1.   

    大致的将我实现的方法说明如下。1、 定义一个用于文件上传下载的公共类。public class SUpload{
    //定义类变量
       private ServletConfig config;
       javax.servlet.http.HttpServletRequest request;
       javax.servlet.http.HttpServletResponse response;//定义构造函数
        public SUpload(javax.servlet.ServletConfig config,HttpServletRequest req,HttpServetResponse res){
         this.config=config;
         this.request=req;
         this.response=res;
    }
    //下面是上传和下载的代码,我就不写了}//2、在Servelt中使用类。
    一般我们都是继承于HttpServlet来处理。不过就算不是也没关系。原理是一样的。在Servlet中定义初始化方法,覆盖基类的方法。
    //声明类变量
    private ServletConfig config;
    final public void init(ServletConfig config)throws Exception{
         this.config=config;
    }//在处理上传得过程中,
    SUpload su=new SUpload(config,req,res);
    //这样就调用了定义的类。
    3、同时我在处理的时候遇到了这样的问题。就是页面分发的问题。
    当我们默认继承HttpServlet时候,使用
    RequestDispatcher dis=getServletContext().getRequestDispatcher("filepath");
    dis.forward(req,res);但是当我们处理了init的方法后,这样就不行了。要将第一句改为
    RequestDispatcher dis=config.getServletContext().getRequestDispatcher("filepath");最后, 说明一下,这些是我手敲进去的。
    所以可能某些单词写的太快不正确。希望谅解。因为有代码的不是一台机子。希望对楼主有用。
      

  2.   

    upfileload=new SmartUpload();
           upfileload.initialize(this.getServletConfig(),req,resp);   
           
           try{
             date=new Date();
             file_name=String.valueOf(date.getTime());         
             upfileload.setDeniedFilesList("exe,html,php,jsp,asp,aspx,htm");
             upfileload.upload();  
          com.jspsmart.upload.Request filerequest = upfileload.getRequest();
           String tt[] = filerequest.getParameterValues("file_ro");  
           if(tt.length>=3){
           upfile.setFile_rs(true);
           kk[0]="1";
           }
           else{
           upfile.setFile_rs(false);
           kk[0]="0";
           }
           if(tt.length>=2){
           upfile.setFile_rf(true);
           kk[1]="1";
           }
         else{
           upfile.setFile_rf(false);
           kk[1]="0";
         }
           if(tt.length>=1){
           upfile.setFile_ro(true);
           kk[2]="1";
           }
         else{     
           upfile.setFile_ro(false);
           kk[2]="0";
         }
             tempfile=upfileload.getFiles().getFile(0);        
             upfileload.getFiles().getFile(0).saveAs(url+"\\"+file_name+"."+upfileload.getFiles().getFile(0).getFileExt());
             out.println("上传文件成功!");
          }catch(Exception e){
          out.println("上传文件失败!你所选择文件类型不允许上传!");
          }
      

  3.   

    文件上传最好的方法是用newxy技术,你可以不写java代码实现文件上传、下载、下载记数;不写java代码对数据库作增、删、改操作。
    newxy技术网站:http://www.newxy.net
    newxy技术范例:http://www.newxy.net/zh_cn/samples/index.jsp另见技术文章:http://blog.csdn.net/nlhlx/