进度条

来源:互联网 发布:淘宝店铺异常pc端处理 编辑:程序博客网 时间:2024/05/16 09:13

二种方法做到:

         1.from 的提交listen

         2.线程.

                       在页面上的提交按扭上,加一个JS.(目的是事件监听打开)

                      后台提交写一个线程,时时监听文件上传的进度.并把进度放在SESSION中.让JS时时去读取.

方法1:

upload.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Upload Image</title>
    <meta http-equiv="Cache-Control" content="no-store"/>
    <meta http-equiv="Pragma" content="no-cache"/>
    <meta http-equiv="Expires" content="0"/>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 <script src="js/jquery-1.2.3.js" type="text/javascript" charset="utf-8"></script>
</head>

<script>
 jQuery(document).ready(function() {


     var cancel = $("#cancelButton");
     var upload = $("#uploadButton");
     var progressBar = $("#progressBar");
     var progressBarContainer = $("#contentLoading");
//attach progressBar style
     progressBarContainer.css({width:"300px",height:"10px",lineHeight:"10px",background:"url(img/progress/bgbar.gif) left top",display:"none",marginTop:"5px"});
     progressBar.css({width:"0px",height:"10px",lineHeight:"10px",background:"url(img/progress/forebar.png) left top"});
     //progressBar.css({width:"10px",height:"10px",lineHeight:"10px"});;
    
     progressBar.html(" ");
     cancel.click(function(){
      Editor.dialogs.ImageSource.hide();
      return false;
     });
     upload.click(function(){      
     
    progressBarContainer.css("display","block");
    progressBar.css("width","0px");
    var url = "./demos/uploadInfo.jsp?type=1";
    
    var testIndex = 0;
    
    uploadingFile = true;
    
    progressBarHandler = window.setInterval(function(){
   // Util.log(url + "&random=" + (new Date().getTime()));
    
   // progressBar.css("width",testIndex*3);
   // testIndex += 1;
    
   // if (testIndex >100 )testIndex = 0;
    
    $.ajax({url:url + "&random=" + (new Date().getTime()),
                 type: 'GET',
                 dataType: 'html',
                 timeout: 10000,
                 error: function(){
                 
                 },
                 success: function(html){
                  
                  testIndex+=1;
                  if (testIndex>100){
                  // progressBarHandler = window.clearInterval(progressBarHandler); 
                  }
                  var percentage = parseInt(Number(html));
                  //var percentage = parseInt(Number(html)*100);
                  //Util.log("~~ current progress"+percentage+ " html "+html+ " bar width "+progressBar.css("width"));

                  if (percentage == -1){
                   
                   if (uploadingFile){
                    
                    progressBar.css("width",100*3);
                    
                    progressBarHandler = window.clearInterval(progressBarHandler);                   
                    window.setTimeout(function(){
                     progressBar.css("width",100*3);       
                             Editor.dialogs.ImageSource.hide();},1000);              uploadingFile = false;
                   }else{
                    progressBar.css("width",100*3);
                    progressBarHandler = window.clearInterval(progressBarHandler);  
                   }
                   
                   return;
                  }else{
                 
                  progressBar.css("width",percentage*3);
                  
                  }
                  //document.getElementById("progressBar").innerHTML =' percentage;
                  //$("#progressBar").html(percentage);
                      
                         
                }
               });//end of ajax
             
             
    
    
    },50);    
     });

 
   })
</script>

<body>

<div class="ui-dialog-titlebar"><span class="ui-dialog-title">Upload Image</span><div class="ui-dialog-titlebar-close"/></div>
<fieldset style="margin:5px;border:1px solid #CCCCCC;padding:0;font-size:11px;">
 <form wicket:id="inviteFriendForm" id="inviteFriendForm" action="" method="post" enctype="multipart/form-data">
   <br>
   <div style="height:60px;">
     <input type="file" id="fileInput" wicket:id="fileInput" size="30"/> 
     <div id="contentLoading"><div id="progressBar"></div> </div>
     <br>
     <br>
     <input id="uploadButton" type="submit" value="Upload!"/>
     <br>
   </div>
   <br>
   <!-- input type="hidden" wicket:id="finalPath" value="" id="finalPath"/-->
 </form> 
</fieldset>
</body>
</html>

uploadinfo.jsp   输出进程的HMTL

 

<%@ page contentType="text/html; charset=utf-8" language="java" import="org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadInfo" errorPage="" %>
<%
UploadInfo progress =  (UploadInfo) session.getAttribute("org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadWebRequest");
if (progress == null){
 out.print("-1");
}else{
 out.print(progress.getPercentageComplete());
}
%>

线程的方法:

    new Thread() {

     @Override
     public void run() {
      
       try {
          while (progress != -1){
           Thread.sleep(200);
         
           HTTPsession.setAttribute("imageProgress", Double.toString(progress*1.0/progressValue));
          }
          HTTPsession.setAttribute("imageProgress", Integer.toString(1));
       } catch (InterruptedException e) { }

      // The bar is stopped automatically, if progress is done
     }
    }.start();