jsp无刷新文件上传的实现

分类: Jsp   出处:iocblog整理  更新时间:2008-06-20   添加到收藏  

本想利用ajax实现无刷新文件上传,后来发现不易实现,在网上找了很久,终于找到一个“伪ajax”的实现方式,现在发出来我实际的代码,一飨读者。
首先我们需要一个上传的html或者jsp文件,如下:
<form method="post" action="../servlet/fileuploadservlet" enctype="multipart/form-data" target="hidden_frame" onsubmit="showmsg();" style="margin:0;padding:0">
                <input type="file" name="sfile" style="width:450">
                <input type="hidden" name="act" value="upload">
                <input type="submit" value="上传文件"><span id="msg"></span>
                <br>
      <font color="red">支持jpg,jpeg,gif,bmp,swf,rmvb,rm,avi文件的上传</font>              
                <iframe name='hidden_frame' id="hidden_frame" style='display:none'></iframe>
          </form> 
其中form的target属性[b]非常重要[/b],把form的action提交到一个隐藏的iframe中去执行,然后返回的时候在msg的地方填入操作即可,servlet的类似代码如下:
 public void dopost(httpservletrequest request, httpservletresponse response)
    throws ioexception, servletexception{
  printwriter out = response.getwriter();
  response.setcharacterencoding("utf-8");
  response.setheader("charset","utf-8");
  response.setheader("cache-control", "no-cache");(来源 www.iocblog.net)

  string filepath="",msg="",ext="";
  smartupload su = new smartupload();
  boolean succ=true;
                  。。。。。。
  try{
   su.initialize(getservletconfig(),request,response);
   su.setmaxfilesize(102400000);
   su.settotalmaxfilesize(102400000);
   su.setallowedfileslist(mediaext+","+flashext+","+imgext);
   su.setdeniedfileslist("exe,bat,,");
   su.upload();
   for (int i=0;i<su.getfiles().getcount();i++)
   {
    com.jspsmart.upload.file file = su.getfiles().getfile(i);
 
    if (file.ismissing()) continue;
 
    string filename=uploadfileutils.returnrandomfilename(file.getfileext());
    ext=file.getfileext().tolowercase();
                 。。。。。。。。。。。
    
    msg="<a href="#">上传成功!</a>";
   }
  }catch(smartuploadexception sue){
   succ=false;
   msg="<font color=red>上传失败:请检查文件扩展名或文件大小!</font>";
  }catch(exception ex){
   succ=false;
   msg="<font color=red>上传失败:请检查文件扩展名或文件大小!</font>";
   ex.printstacktrace();
  }
    msg=escape.escape(msg);
    if(succ)
     out.println("parent.document.getelementbyid('msg').innerhtml = unescape('"+msg+"');parent.backcalliframe('"+escape.escape(ext)+"','"+escape.escape(filepath)+"')");
    else
     out.println("parent.document.getelementbyid('msg').innerhtml = unescape('"+msg+"');");
 out.close();(来源 www.iocblog.net)
 }


Tag: 上传



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。