需求:点击列表按钮,可以下载文件
步骤:
- 请求后端接口
- 请求时设置
responseType: 'blob',
- 接口返回的文件流数据res
- 处理文件流数据
// 下载文件
downloadFile (row) {
this.$message.warning('下载文件中...')
Axios({
method: 'get',
url: `xxx`,
responseType: 'blob',
})
.then((blob) => {
this.downloadHandler(blob.data, row.fileName)
})
.catch(error => {
this.$message.error('文件下载失败:', error)
})
},
//处理并打开文件流数据
downloadHandler (data, name) {
const blob = new Blob([data])
const url = window.URL.createObjectURL(blob)
const a = document.createElement('a')
a.href = url
a.download = name
document.body.appendChild(a)
a.style.display = 'none'
a.click()
document.body.removeChild(a)
},