@[toc] vue下载文件流为excel文件
1.配置axios的responseType
配置axios的responseType为blob类型(必须配置,否则下载的文件会乱码)
axios.request({
url: 'http://xxxxx/export',
method: 'post',
responseType: 'blob',
data: {xxx: xxx}
})
2. 创建一个新的url,此url指向新建的Blob对象
if (!data) { //data为axios返回的文件流
this.$message.error('下载失败,解析数据为空!')
return
}
// 创建一个新的url,此url指向新建的Blob对象
//type这里因为我要下载excel文件,所以设置的是application/vnd.ms-excel;charset=utf-8
let url = window.URL.createObjectURL(new Blob([data], {type: "application/vnd.ms-excel;charset=utf-8"}))
// 创建a标签,并隐藏a标签
let link = document.createElement('a')
link.style.display = 'none'
// a标签的href属性指定下载链接
link.href = url
//setAttribute() 方法添加指定的属性,并为其赋指定的值
// 后缀格式.csv/.xsls要和需要和后端返回格式相同,这里以.csv为例
link.setAttribute('download', '文件名称.xlsx')
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
3.Blob对象支持的类型列表
| type | 拓展名 |
|---|---|
| application/vnd.ms-excel | xlm/xla/xlc/xlt/xlw |
| text/html | html |
| application/msword | doc |
| application/vnd.openxmlformats-officedocument.wordprocessingml.document | docx |
| application/vnd.openxmlformats-officedocument.spreadsheetml.sheet | xlsx |
| video/mpeg | mp2/mpa/mpe/mpeg/mpg/mpv2 |
| audio/mpeg | mp3 |
| text/plain | txt,普通类型 |
| application/pdf | |
| application/octet-stream | */bin/class/dms/exe/lha/lzh |
| application/zip | zip |
| image/jpeg | jpeg / jpe / jpg |
| image/png | png |
| image/gif | gif |
| image/svg+xml | svg |
| image/tiff | tiff |
| application/vnd.ms-powerpoint | ppt |

本文介绍如何使用Vue结合axios实现从服务器下载Excel文件的功能。首先配置axios的responseType为blob,确保文件正确下载;然后通过Blob对象创建URL并利用a标签触发文件下载,最后列出支持的不同文件类型。
1086

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



