vue2中使用axios下载execl 文档,出现乱码,如何解决
时间: 2024-01-29 17:02:32 浏览: 127
如果在 Vue2 中使用 axios 下载 Excel 文件时出现乱码,可以尝试以下方法解决:
1. 设置 responseType 为 'blob':在 axios 请求中,设置 responseType 为 'blob',以便正确地处理二进制数据。
2. 处理文件名编码:在下载 Excel 文件时,需要设置文件名编码为 UTF-8 或 GB2312,以便在不同语言环境下正确地显示文件名。
下面是一个示例代码:
```javascript
import axios from 'axios'
// 下载 Excel 文件
export function downloadExcel () {
axios({
method: 'get',
url: '/api/download/excel',
responseType: 'blob' // 设置响应类型为二进制流
}).then(res => {
const content = res.data
const fileName = decodeURI(res.headers['content-disposition'].split('=')[1]) // 获取文件名并进行解码
const blob = new Blob([content])
const link = document.createElement('a')
link.href = URL.createObjectURL(blob)
link.download = fileName // 设置文件名
link.click()
})
}
```
在上述代码中,首先设置 responseType 为 'blob',然后在获取文件名时进行解码,并将文件名设置为下载链接的 download 属性。最后,通过创建一个 a 标签并模拟点击该标签,实现 Excel 文件的下载。
如果上述方法仍然不能解决乱码问题,可能需要检查 Excel 文件本身的编码格式是否正确。
阅读全文