Как мне указать явные значения на месте внутри функции обратного вызова? - PullRequest
0 голосов
/ 02 апреля 2012

Этот код частично работает, но он перемещает только один индикатор прогресса при загрузке нескольких файлов. Мне нужно знать, как я могу заставить его работать с несколькими объектами 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

  }      

1 Ответ

0 голосов
/ 02 апреля 2012

я думаю, что все кажется правильным ... попробуйте загрузить больший файл и проверить прогресс ... иногда, если вы загружаете один / несколько небольших файлов ... метод send отправит большой кусок байтов водин запрос (это также зависит от вашей пропускной способности) ... так что метод onprogress вызывается один раз ... вам также нужно проверить ход выполнения всех файлов

...