【问题标题】:how to calculate upload speed in jsjs如何计算上传速度
【发布时间】:2021-02-01 08:11:17
【问题描述】:

我正在开发一个 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");
}

那么有没有什么简单的方法来计算用户的上传速度或这个脚本的任何修复

【问题讨论】:

    标签: javascript jquery django xmlhttprequest


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-05-16
        • 1970-01-01
        • 2011-03-09
        • 1970-01-01
        • 2011-06-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多