【问题标题】:How to show progress of file download in native browser download bar in js?如何在js中的本机浏览器下载栏中显示文件下载进度?
【发布时间】:2022-12-30 04:30:31
【问题描述】:

我正在下载一个文件,它会在完全下载后显示在下载栏中。 我想在本机浏览器下载栏中显示文件下载进度,该进度定义了下载的字节数和下载栏中的剩余时间。这样用户更容易理解下载开始,否则会出现没有下载文件的困惑。 我尝试了下面的代码,但它仅在文件完全下载时显示。因此没有显示进度。

    axios({
        url: blobUri,
        onDownloadProgress(progress) {
            console.log('download progress:', progress);
        },
    }).then(response => {
        const file = new Blob([response.data]);
        const fileURL = URL.createObjectURL(file);
        const a = document.createElement('a');
        a.href = blobUri;
        a.download = `test.pdf`;
        a.click();
        console.log('response has arrived');
    });
};

【问题讨论】:

  • 问题是浏览器不显示下载文件的进度?这可能是后端或文件本身的问题。应该有一个包含文件大小的响应标头集,这就是浏览器确定进度的方式。我认为不可能通过 Javascript 做到这一点。您能否提供指向正在下载的文件的链接?
  • @nevada_scout 我尝试将它从 azure blob 存储直接下载到浏览器下载,现在问题是我无法为下载的文件设置自定义名称。你知道为通过 bloburl 下载的文件设置自定义名称的任何方法吗?

标签: javascript reactjs typescript browser download


【解决方案1】:

我遇到了和你一样的问题。最后我从这个article找到了一个完美的解决方案。

【讨论】:

    猜你喜欢
    • 2014-11-18
    • 2017-02-15
    • 1970-01-01
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 2015-04-11
    相关资源
    最近更新 更多