2012-04-02 19 views
0

此代碼部分工作,但只上傳多個文件時僅向前移動一個進度條。我需要知道如何使它能夠與多個XHR對象和多個進度元素一起工作。如何在回調函數中當場指定顯式值?

var fileinput = document.getElementById('multiple_files_upload'); 
    var progressbars = document.getElementById('progressbars'); 
    //for every file... 
    for (var x = 0; x < fileinput.files.length; x++) { 

     // CREATING THE PROGRESSBAR   
     var newprg = document.createElement('progress'); 
     var divIdName = 'prg'+x; 
     newprg.setAttribute('id',divIdName); 
     newprg.className = "fileprogress"; 
     newprg.setAttribute('max',100); 
     newprg.setAttribute('value',0);   
     progressbars.appendChild(newprg); 

     // CREATING THE REQUEST FOR SUBMISSION 
     var newfd = new FormData(); 
     newfd.append('Filedata', fileinput.files[x]); 
     var xhr = new XMLHttpRequest(); 
     xhr.upload.onprogress = function(e) { 
      var percentComplete = e.position * 100/e.totalSize; 
      document.getElementById(divIdName).setAttribute('value',percentComplete); 
     } 
    xhr.open('POST', '<?php echo Yii::app()->CreateAbsoluteUrl('album/uploadifyphoto'); ?>', true); 
    xhr.send(newfd); // multipart/form-data 

    }  

回答

0

我覺得一切似乎是正確的......儘量上傳較大文件,並檢查進度......有些時候,如果你上傳一個/多個小文件...發送方法將發送大大量的字節在一個單一的請求(這也取決於你的帶寬)...所以進展方法調用一次...你還需要檢查所有文件上傳完成的進度

相關問題