在项目中我们会遇到一些关于下载图片、文档、文本的场景
1、点击事件download创建a标签,处理数据中的url转为blod格式,fetch请求将普通的url连接当做参数请求,第一个then里面返回res.blob()格式(也可以改为text,得到的就是一个text字符串,但是要做一个json解析,所以极少用text格式,res.text()、res.json())
2、fetch请求不过多去说。
3、第二个then返回blob对象,通过URL.createObjectURL(blob)转成blob地址赋值给刚创建a的href,a标签的download设置文件名,然后执行a标签的点击触发 就大功告成!
4、话不多说 ,上代码复制粘贴过去 ,下载的点击事件里面数据自己根据项目
//我的item数据格式
// {
// name: "文档.xlsx",
// fileurls: "https://xxxx.cn/xxx/xxx/1111.xlsx",
// fsize: "0.09",
// uid: 1234567787654
// }
download(item){ //下载文件
let a = document.createElement('a') // 创建a标签
let url = item.fileurls // 完整图片地址url连接 例如https://xxxx.cn/xxx/xxx/xxxx.xlsx 或者https://xxxx.cn/xxx/xxx/xxxx.png
fetch(url).then(res =>res.blob()).then(blob => {
a.href = URL.createObjectURL(blob) //blob地址
a.download = item.name // 下载文件的名字
a.click()
})
}