【发布时间】: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