是否有可能找到html 5文件上传的ETA?

时间:2013-08-16 19:24:58

标签: javascript jquery html5

我的网站上有一个html5文件上传脚本。

使用此进度条脚本

可以正常工作
xhr.upload.addEventListener("progress", function(e) {
            var pc = parseInt(100 - (e.loaded / e.total * 100));
            var pci = parseInt(e.loaded / e.total * 100);
            //get us our ETA
            //kilobytes or megabytes?
            var pcia = e.loaded / 1024;
            var pcia2 = e.total / 1024;
            if (pcia2 > 1024)
            {
                pcia = pcia / 1024
                pcia2 = pcia2 / 1024;
                progress.style.backgroundPosition = pc + "% 0";
                elapsedtime = startTime + new Date();
                alert(startTime);alert(new Date());
                var eta = ((e.total / e.loaded) * elapsedtime) - elapsedtime;
            progress.innerHTML = pci + "% (" + Math.ceil(pcia * 100)/100 + " MB of " + Math.ceil(pcia2 * 100)/100 + " MB)-(" + eta +" secs. remaining)";
            }
            else
            {
                progress.style.backgroundPosition = pc + "% 0";
            progress.innerHTML = pci + "% (" + Math.ceil(pcia * 100)/100 + " KB of " + Math.ceil(pcia2 * 100)/100 + " KB)-(" + eta +" secs. remaining)";
            }
        }, false);

好的,所以我已经提醒了开始时间和调用进度的时间。 但变量ETA显示为NaN。 你怎么能达到类似日期的东西(“Y-m-d H:i:s”); (来自php)在javascript中?

1 个答案:

答案 0 :(得分:3)

要查找ETA,您必须将代码更改为此。
这里所做的更改是我们有2个新变量,名为startTime和now。

上传开始后立即放置var startTime,它应该与var now语法相同。

此脚本将告诉用户上传的完整百分比,千字节/兆字节数与总共kb / mb,现在是文件上传的ETA。

xhr.upload.addEventListener("progress", function(e) {

    var pc = parseInt(100 - (e.loaded / e.total * 100));
    var pci = parseInt(e.loaded / e.total * 100);
    //get us our ETA
    //kilobytes or megabytes?
    var pcia = e.loaded / 1024;
    var pcia2 = e.total / 1024;
    if (pcia2 > 1024)
    {
    pcia = pcia / 1024
    pcia2 = pcia2 / 1024;
    var now = (new Date()).getTime(); 
    var elapsedtime = now - startTime;
    elapsedtime = elapsedtime / 1000;
    var eta = ((e.total / e.loaded) * elapsedtime) - elapsedtime;
    eta = Math.round(eta);
    progress.innerHTML = pci + "% (" + Math.ceil(pcia * 100)/100 + " MB of " + Math.ceil(pcia2 * 100)/100 + " MB)-(" + eta +" secs. remaining)";alert(pci); progress(pci, $('#progress'));
        }
        else
        {
        var now = (new Date()).getTime(); 
        var elapsedtime = now - startTime;
        elapsedtime = elapsedtime / 1000;
        var eta = ((e.total / e.loaded) * elapsedtime) - elapsedtime;
        progress.innerHTML = pci + "% (" + Math.ceil(pcia * 100)/100 + " KB of " + Math.ceil(pcia2 * 100)/100 + " KB)-(" + eta +" secs. remaining)"; progress(pci, $('#progress'));
                }
            }, false);