后端采用二进制流返回文件而不是常见的返回网络URL
在antd-pro环境下
发送ajax请求时需要配置为
config = {
headers : {
token : tokenHandler.getSessionByKey('token'),
},
responseType : 'blob',
};
获取到数据之后,在对应modal中用异步实现下载
* saveFile({ payload: {blob, fileName}}, { call }) {
if (window.navigator.msSaveOrOpenBlob) {
navigator.msSaveBlob(blob, fileName);
} else {
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = fileName;
//此写法兼容可火狐浏览器
document.body.appendChild(link);
var evt = document.createEvent("MouseEvents");
evt.initEvent("click", false, false);
link.dispatchEvent(evt);
document.body.removeChild(link);
}
},