<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> 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");  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.jsp(SUN企业级应用的首选)smart.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();
 }
据我所知,客户端需要用Form方式提交

解决方案 »

  1.   

    无刷新上传2种方式:隐藏的IFRAME或者AJAX
      

  2.   

    form有个target 把这个目标窗口指向页面上一个隐藏的iframe就行了, 上传完成执行段js控制表单页行为或alert一个信息...
    <form target="myifr" ...>
    <input type="file" />
    <input type="submit" value="submit" />
    </form>
    <iframe name="myifr" src="" style="display:none" /></iframe>
      

  3.   

    就像3楼所说,就用隐藏的Iframe就可以了。
      

  4.   


    我没试过用ajax
    你试过?
      

  5.   

    这个网上应该也有源码,你可以搜索看看jquery.js
    interface.js应该大部分都是用这2个JS库做的
      

  6.   

    那你研究过原理没有
    真的完全用ajax吗
    你有自己动手不用jquery.js interface.js这些东西实现过吗
      

  7.   

    我有AJAX+。NET的代码如果没有实现过我也不会说我就是用的这2个东东
    当然还有一些我自己写的JS代码
      

  8.   


    你说的不是废话嘛?你用iframe还不是得借助服务器端的代码把图片传上去?AJAX就只是不兼容浏览器而已