如何在js中计算上传速度

问题描述

我正在django网站上工作,我认为用户可以上传视频,并且我需要为用户添加一个按钮,以便他可以对其上传速度进行简短测试 经过大量研究后,我找到了此脚本,但似乎无法正常运行,我不知道为什么

    var http = new XMLHttpRequest();
var startTime,endTime;
var myData = "d="; // the raw data you will send
for(var i = 0 ; i < 1022 ; i++) //if you want to send 1 kb (2 + 1022 bytes = 1024b = 1kb). change it the way you want
{
    myData += "k"; // add one byte of data;
}

http.open("POST",url,true);

http.setRequestHeader("Content-type","application/x-www-form-urlencoded");
http.setRequestHeader("Content-length",myData .length);
http.setRequestHeader("Connection","close");

http.onreadystatechange = function() {
    if(http.readyState == 4 && http.status == 200) {
        endTime = (new Date()).getTime();
        ShowData();
    }
}
startTime = (new Date()).getTime();
http.send(myData);

function ShowData()
{
    var duration = (endTime - startTime) / 1000;
    var bitsLoaded = myData * 8;
    var speedMbps = ((bitsLoaded / duration) / 1024 / 1024).toFixed(2);
    alert("Speed: " + speedMbps + " Mbps");
}

有没有简单的方法可以计算用户的上载速度或此脚本的任何修补程序

解决方法

您可以使用upload属性的progress事件

http.upload.addEventListener('progress',function(e){
    console.log(e.loaded + ' uploaded out of ' + e.total);
    // do your calculations here
},false);