【问题标题】:Track downloading file with Download Progress Bar JQuery?使用下载进度条 JQuery 跟踪下载文件?
【发布时间】:2018-04-14 04:19:13
【问题描述】:

提供下载手册按钮。单击这些按钮后,应下载超过 5 MB 的 pdf 文件。应显示进度条以显示下载文件的百分比。下载完成后,进度条应该达到 100% 并且应该被隐藏。应显示弹出消息“下载完成”。 使用 JQuery。

【问题讨论】:

标签: jquery jquery-ui jquery-plugins


【解决方案1】:
 <script type="text/javascript">
    $(".download").click(function(){
    window.location.href = 'file/30mb.pdf'; //set your file url which want to download
    var data = [];
    for (var i = 0; i < 100000; i++) {
    var tmp = [];
    for (var i = 0; i < 100000; i++) {
    tmp[i] = 'hue';
    }
    data[i] = tmp;
    };
    $.ajax({
    xhr: function () {
    var xhr = new window.XMLHttpRequest();
    xhr.upload.addEventListener("progress", function (evt) {
    if (evt.lengthComputable) {
    var percentComplete = evt.loaded / evt.total;
    //console.log(percentComplete);
    $('.progress').css({
    width: percentComplete * 100 + '%'
    });
    if (percentComplete === 1) {
    $('.progress').addClass('hide');
    }
    }
    }, false);
    xhr.addEventListener("progress", function (evt) {
    if (evt.lengthComputable) {
    var percentComplete = evt.loaded / evt.total;
    console.log(Math.round(percentComplete*100)+"%");
    $(".perc").text(Math.round(percentComplete*100)+"%");
    if((Math.round(percentComplete*100))==100)
    {
    $(".perc").text("download completed");
    $('.progress').removeClass('hide');
    // $(".perc").text("");
    }
    $('.progress').css({
    width: percentComplete * 100 + '%'
    });
    }
    }, false);
    return xhr;
    },
    type: 'POST',
    url: "file/30mb.pdf", //set your file url which want to download
    data: data,
    success: function (data) {}
    });
    });

    </script>

https://jsfiddle.net/viralvanani/x2uhyjjL/

【讨论】:

    【解决方案2】:

    您可以使用像ajax-progress 这样的插件。

    我在 jsfiddle 上创建了一个小型复制

    const url = '//somefile.pdf'
    
    $.ajax(url, {
      progress: function(e) {
        if (e.lengthComputable) {
          const completedPercentage = Math.round((e.loaded * 100) / e.total);
          // You can inject completedPercentage into the DOM now
          console.log(completedPercentage);
        }
      }
    })
    

    请注意,您放置的 URL 必须可以被您的域访问(即应设置 Access-Control-Allow-Origin)。

    【讨论】:

    • 什么部分?它是否记录任何错误?你得帮我一下:) 还有很多关于 SO 的问题,这是一个副本。您是否也看过这些解决方案?
    • @Kano 他是对的,它不起作用。不起作用的部分是记录进度。否则它似乎下载就好了。
    • 当用户下载文件时可以使用它吗?我有一个加载器小部件,我想在文件完成后隐藏。这个插件可以解决这个问题,但是文件没有保存在用户的机器上……不确定 JS 是否会允许这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多