在开发过程中,难免会遇到后台接口返回流文件,此时可以根据blob来下载
1.一些常用文件对应的type
文件后缀 | blob对应的type |
.doc | application/msword |
.docx | application/vnd.openxmlformats-officedocument.wordprocessingml.document |
.xls | application/vnd.ms-excel |
.xlsx | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
.txt | text/plain |
application/pdf |
2.代码如下
downLoadFile(params).then(res => {
if (res.size !== 0) {
const blob = new Blob([res], { type: 'application/pdf' })
const url = window.URL.createObjectURL(blob)
const link = document.createElement('a')
link.style.display = 'none'
link.href = url
link.setAttribute('download', params.filename)
document.body.appendChild(link)
link.click() // a标签自动触发点击事件
} else {
this.msgError('文件不存在')
}
})
这样写完其实有个问题,那就是下载的文件打开是空的,找了好久找到问题了,解决如下:
在接口定义那里设置接收响应类似是blob,这样就可以吧文件下载下来了