基本上我創建了一個簡單的項目,用戶可以通過拖放將文件上傳到服務器。只需通知用戶需要多長時間才能完成我需要顯示上傳速度的流程。我發現這個問題estimate users' upload speed without direct permission但它完全不適合我的項目。如何檢查JavaScript中的上傳速度?
因此,這裏是我的代碼我如何上傳文件:
function upload(file){
var xhr=new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == XMLHttpRequest.DONE) {
alert(xhr.responseText);
}
}
xhr.upload.addEventListener('progress', function(e){
$('.upgbar').show();
$('.trkpb').css('width', (e.loaded/e.total*100)+"%");
var loaded = e.loaded;
var total = e.total;
var progressValue = Math.round((e.loaded/e.total) * 100);
var seconds_elapsed = (new Date().getTime() - started_at.getTime())/1000; var bytes_per_second = seconds_elapsed ? loaded/seconds_elapsed : 0 ;
var Kbytes_per_second = bytes_per_second/1000 ;
var remaining_bytes = total - loaded;
var seconds = seconds_elapsed ? remaining_bytes/bytes_per_second : 'calculating' ;
$('.time_re').text("Time Remaining: "+seconds.charAt(0));
}, false);
xhr.open('post','../uploadtostack',true);
xhr.setRequestHeader('X-File-Name',file.name);
xhr.setRequestHeader('x-File-Size',file.size);
xhr.setRequestHeader('X-File-Type',file.type);
xhr.send(file);
}
通過xhr.upload.addEventListener
我估計剩餘時間和上傳的數據量,但不知道munipulate這個給我看上傳速度。而如果你可能會爲什麼我的線得到一個錯誤$('.time_re').text("Time Remaining: "+seconds.charAt(0));
TypeError: seconds.charAt is not a function[Learn More]
我會很感激,如果有人能告訴我如何實現在JavaScript中的speechecker || jQuery的。問候
查找文件上傳管理員。您可能會更好地報告已上傳文件*的數量與文件的實際大小。 –
用戶與服務器的連接速度會隨着互聯網連接數量的變化而變化。在我的頭頂上有:用戶的互聯網連接,你的服務器的互聯網連接,當前在你的網絡服務器上的負載(如果它陷入了不能快速處理),用戶在他們的計算機上的CPU開銷,..等等。 @Mike C建議對最終用戶更可靠和有價值。 – Adrian
我認爲這些問答提供了很好的洞察,瞭解它如何完成:http://stackoverflow.com/questions/21027888/calculate-upload-speed和http://stackoverflow.com/questions/15472251/estimate-users-upload無需直接許可 - 檢查XHR是否成功。 –