文件已经处理过跨域
文件流下载的可以
export const fileDownload = (id) => get(/file/download/${id}
, { responseType: 'blob' })
async handleDown(id) {
this.loadingText = '正在下载,请稍候'
this.loading = true
try {
let res = await fileDownload(id)
console.log(res.data, 'res.data')
const blob = new Blob([res.data])
const reader = new FileReader()
reader.readAsDataURL(blob)
reader.onload = e => {
const filename = res.headers['content-disposition'].split('filename=')[1] //或者可以改成自定义的文件名称
const a = document.createElement('a')
a.download = decodeURIComponent(filename)
a.href = e.target.result
document.body.appendChild(a)
a.click()
document.body.removeChild(a)
}
this.loading = false
this.$message.success('文件导出成功')
} catch (e) {
throw new Error(`下载文件 ${item.name} 失败`)
}
},
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答5.2k 阅读✓ 已解决
1 回答3.3k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
使用a标签自定义文件名有跨域限制,还有浏览器兼容性问题