【问题标题】:Calculating remaining time of upload计算剩余上传时间
【发布时间】:2012-03-11 12:52:58
【问题描述】:

我正在使用 Uploadify 插件来允许用户上传文件,并且我的进度条正在工作。现在我想给用户一个估计的完成时间,但我不确定如何使用 Javascript 计算它。

假设我有以下变量:uploadSpeed(以 kb/s 为单位)、timeStarted(Javascript 日期对象?)、fileSize(文件大小,以字节为单位)。如何计算文件完全上传前的倒计时?

【问题讨论】:

    标签: javascript upload uploadify countdown


    【解决方案1】:
    var uploadedSoFar = uploadSpeed * (Date.now() - timeStarted.milliseconds) / 1000;
    var timeRemaining = ((fileSize - uploadedSoFar) / uploadSpeed) + ' seconds';
    

    【讨论】:

      【解决方案2】:

      这只是一个数学问题吗?如果是这样,取 timeStarted 和 timeNow 之间的差,乘以 uploadSpeed,取结果并从 fileSize 中减去它,然后除以您的 uploadSpeed。这是您剩余的时间(假设 uploadSpeed 在任何时候都是恒定的)。

      (fileSize - (timeNow - timeStarted) * uploadSpeed) / uploadSpeed
      

      但更准确的方法是取实际尚未上传的字节数来计算剩余时间。这应该没问题,因为用户正在将文件上传到您的服务器。因此,您可以从您的服务器读取部分文件大小。

      【讨论】:

        【解决方案3】:

        您并不需要 timeStarted 变量,因为 uploadSpeed 不是恒定的,您最好监控上传的字节数。

        var uploaded  // ammount of bytes uploaded
        setInterval("updateProgress()", 1000) //every second updates the uploaded counter
        function updateProgress(){
            uploaded += uploadSpeed //increments the ammount of bytes uploaded in a second
            updateProgressBar((uploaded/fileSize)*100) // update progress bar
        }
        

        【讨论】:

        • 如何检测上传量
        • @Till XMLHttpRequest.upload.onprogress 事件有 2 个您需要的属性:loaded 和 total
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-30
        • 1970-01-01
        • 2018-05-18
        相关资源
        最近更新 更多