XHR进展仅在开始时触发

时间:2014-12-10 22:07:07

标签: javascript xmlhttprequest

我有一些代码用于在扩展客户端后自动上传图像。图像上传得很好,但是,第一次后XHR进度事件不会触发。任何帮助将不胜感激。

注意:我正在上传一个jpg的BLOB,如果这可能很重要,他们会在服务器上组装并保存它。

这是我的代码:

var uploadCameraPhoto = function ( blob, filename, dataUrl ) {
    var xhr = new XMLHttpRequest();
    if ( xhr.upload ) {
     var formData = new FormData() ;
     formData.append( 'file', blob, filename ) ;

     xhr.upload.onprogress = function(e) {
      console.log(e.loaded + ' / ' + e.total);
     } ;

     xhr.onload = function (e) {
      console.log( ( ( xhr.status === 200 ) ? 'uploaded' : ( 'error: ' + xhr.status ) ) );
     } ;

     var action = $( 'upload' ).get( 'action' ) ;

     xhr.open("POST", action, true);
     xhr.setRequestHeader("X_FILENAME", filename);
     xhr.send(formData);
    }
} ;

1 个答案:

答案 0 :(得分:0)

而不是:

xhr.upload.onprogress = function(e) {
  console.log(e.loaded + ' / ' + e.total);
};

尝试:

function uploadProgress(e) {
  if (e.lengthComputable) {
    console.log(e.loaded / e.total);
  } else {
    console.log('Cannot compute progress.');
  }
}

xhr.upload.addEventListener("progress", uploadProgress, false);