1.后端传入二进制文件流,通过创建a标签的方法下载文件:
const url = window.URL.createObjectURL(new Blob([res]));
var a = document.createElement("a");
a.download = "文件名.xls";
a.href = url
$("body").append(a);
a.click();
$(a).remove()
URL.revokeObjectURL(url)
问题:下载后的文件出现乱码
后端返回数据:
下载后出现中文乱码。
2.下载xlsx文件时,后端返回的列都显示在同一列中
下载文件:
解决:设置请求responseType为blob
Axios.get(baseURL + '/system/userinfo/exportTemplate', { responseType: 'blob' })
3.从响应头种获取文件名称
后端可以把文件的名称放在响应头中。
处理:
const getFileNameByResponseHeaders = headers => {
const cd = headers['content-disposition']
if (cd && _.isString(cd)) {
const cdArr = cd.split('=')
if (cdArr && _.isArray(cdArr)) {
return decodeURI(cdArr[1])
}
}
return null
}