- 下载过程中,获取进度,fetch API并没有提供类似xhr和ajax的 progress所以用 getReader()来循环读取大小
let size = 0;
fetch( URL() + `/sys/file/download/${uuid}`,{
method: 'GET',
headers:{
token,
}
})
.then(response => {
if(response.ok){
return response;
}else{
console.log("请求失败")
}
})
// 取出body
.then(response => response.body)
.then(body => {
const reader = body.getReader();
return new ReadableStream({
start(controller) {
return pump();
function pump() {
return reader.read().then(res => { //res ({ done, value })

本文探讨了如何在前端使用fetch API处理文件流下载,并通过getReader()实现下载进度的获取。尽管fetch不直接支持xhr或ajax的progress事件,但可以利用Blob和a标签实现文件的下载。尽管这种方式在体验上可能不如传统的a标签直接下载,后者能立即弹出保存窗口并利用浏览器内置的下载工具。
最低0.47元/天 解锁文章
272

被折叠的 条评论
为什么被折叠?



