用window.location.href下载文件可以显示进度吗
时间: 2023-06-30 09:19:44 浏览: 232
使用`window.location.href`下载文件是无法显示下载进度的。因为在使用`window.location.href`下载文件时,浏览器会直接跳转到下载链接,该过程是同步的,无法获取到下载进度信息。
如果需要显示下载进度,可以考虑使用XMLHttpRequest对象,通过Ajax异步请求下载链接,然后监听`onprogress`事件获取下载进度,并将下载的数据流保存到Blob对象中,最后通过URL.createObjectURL方法生成下载链接,供用户下载。
示例代码如下:
```javascript
function downloadFile(url) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'blob';
xhr.onload = function() {
if (xhr.status === 200) {
var blob = xhr.response;
var downloadUrl = URL.createObjectURL(blob);
var a = document.createElement('a');
a.href = downloadUrl;
a.download = 'filename';
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
}
};
xhr.onprogress = function(event) {
if (event.lengthComputable) {
var percentComplete = event.loaded / event.total * 100;
console.log(percentComplete + '% downloaded');
}
};
xhr.send();
}
```
需要注意的是,由于浏览器对于同一域名下的并发请求有限制,若同时下载多个文件,则可能会出现下载速度较慢的情况。
阅读全文