javascript - js如何计算上传速度

标签 javascript jquery django xmlhttprequest

我正在开发一个 django 网站,我有一个 View ,用户可以上传视频,我需要为用户添加一个按钮,以便他可以对其上传速度进行简短测试 经过大量研究后,我发现了这个脚本,但它似乎不起作用,我不知道为什么

    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");
}

是否有任何简单的方法来计算用户的上传速度或对此脚本的任何修复

最佳答案

旧帖子,但没有看到解决方案,我也想计算上传速度。这是我的解决方案。

var timestamp = new Date().getTime();
var chunk = 0;

http.upload.addEventListener('progress', function(e){
    if (elengthComputable){
        // bytes transferred since last update
        bytes = e.loaded - chunk;
        chunk = e.loaded;
        
        // Get number of seconds since last update
        ms = new Date().getTime();
        elapsed = (ms - timestamp) / 1000.0
        timestamp = ms;
        
        // Divide by elapsed time to get bytes per second
        bps = bytes / elapsed;
        
        // Output upload speed
        console.log("Speed: " + formatBytes(bps)+"/s");
        
    }
}, false);

我使用的 formatBytes() 函数在此页面上提供: Correct way to convert size in bytes to KB, MB, GB in JavaScript

关于javascript - js如何计算上传速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64412288/

相关文章:

jquery - 使用 jQuery Accordion 菜单 : make header's links work

django - 在djangorest框架中显示相关字段的不同字段

javascript - 如何在 ionic 应用程序内正确实现单点登录

javascript - 在新页面中打开媒体,而不是下载(MediaRecorder-sample)

javascript - jQuery 替换相对链接

javascript - 关注有值的输入域

javascript - Firefox 中使用 xhr、客户端证书的跨域 SSL 握手失败

javascript - 如何在使用 Apple pencil 时从 HTML canvas 绘制或获取指针坐标?

Django:输出 JSON,而不是 OrderedDict

python - django - 有什么方法可以替代抽象类的 ForeignKey?