后端采用二进制流返回文件而不是常见的返回网络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); } },