2016-07-05 107 views
0

大家好, 我想在JavaScript文件的總大小上傳.. 我想顯示進度條,顯示上傳大小與文件如何計算傳輸文件上傳的字節數?

的實際大小對於實例文件:-1800 B/3600 B ....沒有(完成50%)........ 3600 B/3600乙

如何計算1800乙即(文件上傳大小)

我只想通過使用JavaScript

回答

0

這裏是文件上傳的代碼。請看的UpdateProgress()函數

var formData = new FormData(), 
    updateProgress = function(evt) { 
     if (evt.lengthComputable) { 
      var percentComplete = (evt.loaded/evt.total) * 100; 
      console.log('Uploading your document...', percentComplete); 
     } else { 
      // Unable to compute progress information since the total size is unknown 
     } 
    }; 



    formData.append('file', file); 

    $.ajax({ 
     url: '/upload-file', 
     type: 'POST', 
     data: formData, 
     cache: false, 
     dataType: 'json', 
     context: this, 
     processData: false, // Don't process the files 
     contentType: false, // Set content type to false as jQuery will tell the server its a query string request 
     success: function(successResponse) { 
     console.log(successResponse); 
     }, 
     error: function(xhr) { 
      console.log('error', xhr); 
     }, 
     xhr: function() { // custom xhr 
      var myXhr = $.ajaxSettings.xhr(); 
      if (myXhr.upload) { // check if upload property exists 
       myXhr.upload.addEventListener('progress', updateProgress, false); 
      } 
      return myXhr; 
     }, 
     complete: function() { 

     } 
    }); 

或者,如果你不想使用jQuery:

const xhr = new XMLHttpRequest(); 
xhr.upload.addEventListener('progress', (evt) => { 
    let percentComplete = null; 
    if (evt.lengthComputable) { 
    percentComplete = Math.round(evt.loaded * 100/evt.total); 
    } 
    console.log('progress', percentComplete); 
}, false); 
xhr.addEventListener('load', (evt) => { 
    console.log('done'); 
}, false); 
xhr.addEventListener('error', (event) => { 
    console.log('error'); 
}, false); 
xhr.addEventListener('abort', (event) => { 
    console.log('abort'); 
}, false); 

xhr.open('POST', 'http://example.com/upload', true); 
xhr.send(formData); 

UPD: 如果evt.lengthComputable是假的,那麼你就需要設置內容 - 了XMLHttpRequest的長頭file.size

$.ajax({ 
      ... 
      beforeSend: function (request) 
      { 
       request.setRequestHeader("Content-Length", file.size); 
      }, 
      .... 
}); 
+0

的值,但evt.loaded正在成爲甚至比evt.total意味着更大的讓我們假設我的文件大小爲7718031個字節,但其上傳77191813超過實際文件大小 – Gautam

+0

什麼是e.total? Alexey – Gautam

+0

evt是ProgressEvent的一個實例。根據文檔,總數「是一個無符號長整數,表示基礎進程正在執行的總工作量」https://developer.mozilla.org/en/docs/Web/API/ProgressEvent –

相關問題