因为后台返回的是文件流,浏览会自动打开并且乱码,我们要对返回的数据进行处理,responseType,值默认为空的情况下,浏览器打开会出现乱码,根据后台返回情况设为blob、arrayBuffer
、json、text、document、json,将文件格式转换过来过来后,再下载和重命名。
下面是示例代码(blob):
axios.get('/jssj-api/screen/export', {
params: { containerNo },
// baseURL: 'http://10.161.41.443:2021',
baseURL: window.host2,
responseType: 'blob', //设置响应的数据类型为一个包含二进制数据的 Blob 对象,必须设置
// headers:{Authorization :'Bearer ' + sessionStorage.getItem('access_token')}
}).then(res => {
let blob = res.data
var blobURL = window.webkitURL.createObjectURL(blob)
var a = document.createElement('a')
// a.download = `${nowTime}${xlsName}`
a.download = '文件名称.xlsx'
a.href = blobURL
document.body.appendChild(a)
a.click()
document.body.removeChild(a)
loadingBox.close()
})
.catch(function (error) { // 请求失败处理
Message.warning('网络异常!')
})