这个问题可能是因为响应中不包含Content-Length头部信息,导致无法知道下载进度而发生。解决方法是手动设置Content-Length头部信息。
示例代码:
axios.get(url, {
onDownloadProgress: (progressEvent) => {
let percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total);
console.log(percentCompleted);
},
responseType: 'blob'
})
.then(response => {
//手动设置Content-Length头部信息
const contentLength = response.headers['content-length'];
response.headers['content-length'] = contentLength ? contentLength : response.data.size;
setTimeout(() => {
console.log('This code will run after the download has been completed');
}, 2000);
})
.catch(error => {
console.log(error);
});