前端使用 POST 请求下载文件

前端传的 参数太多get请求拼接参数无法满足时 就需要改成post 直接下载文件
本文采用fetch请求服务端数据,其他请求工具请自行修改

//这是我在厦门不动产登记系统写的导出
exportExcelPost() {
const {mainList=[]} = this.props;
if(mainList.length==0){
Modal.warning({title:'提示',content:'当前页面没有数据无法导出'});
return ;
}
this.setState({loading:true});
let body={mainList};
let params={
responseType:'blob', method: 'POST',mode : 'cors',credentials:'include',
};
body=JSON.stringify(body);
let headers = Object.assign({}, {
'Content-Type': 'application/json'
},);
fetch(callFeeDetailByTransactionExcel_export_excel, {body,headers,...params}).
then(res => {
if(res.status==200){
res.blob().then(blob=>{
const url=window.URL.createObjectURL(blob);
const filename="欠费案件清单.xlsx";
let a=document.getElementById("a_id");
a.href=url;
a.download=filename;
a.click();
window.URL.revokeObjectURL(url);
});
}
}
).finally(()=>{
this.setState({loading:false})
})
}

//这是我在 antd-pro 房产评估项目 里面写的数据导出

onClick={async () => {
props.dispatch({ type: 'global/loading', loading: true });
const blob = await exportYbd({ ybdIdList:rowKeys });
props.dispatch({ type: 'global/loading', loading: false });
const url=window.URL.createObjectURL(blob);
const filename="住宅标准样本点数据库样本.xls";
const a=document.getElementById("a_id");
a.href=url;
a.download=filename;
a.click();
window.URL.revokeObjectURL(url);
}}

你可能感兴趣的:(前端使用 POST 请求下载文件)