记一个还没解决的bug
import request from 'umi-request'
request('http://192..../shop/export', {
method: 'POST',
data: payload,
params: { access_token: accessToken, shop_id: shopId },
responseType: 'blob' // 转blob
})
.then(res => {
console.log('inter----') // 没进then
const blob = new Blob([res], { type: "application/msexcel" });
const objectURL = URL.createObjectURL(blob);
let btn = document.createElement('a');
btn.download = '文件.xls';
btn.href = objectURL;
btn.click();
URL.revokeObjectURL(objectURL);
btn = null;
})
.catch(error => {
console.error('error---', error)
})
使用post的方式去请求数据流,再下载到本地,现在状况能够请求到数据,但是没进then就报错了, 报错的原因是JSON的转化过程发生了错误,已经配置了responseType: 'blob',但是没有用.
解决办法:需要先把返回的数据处理成一下
let fileName = response&&response.headers&&response.headers['content-disposition']||''
let index = fileName.indexOf('FileName=')
fileName = decodeURI(fileName.slice(index + 9))||''
return Promise.resolve({data:resultData,fileName})