c# 代码
public HttpResponseMessage Export(){
HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
{
response.Content = new System.Net.Http.ByteArrayContent(ms.ToArray());
};
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.ms-excel");
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = Name + ".xls",
DispositionType = "UTF-8"
};
return response;
}
前端代码(react + axios)
export function Post (url,params){
return axios.post(url,params,{
responseType:'arraybuffer'
}).then(response => {
return response;
}).catch(error => {
console.error(error)
})
}
Post(url,params).then(res => {
const url = window.URL.createObjectURL(new Blob([res.data],
// 设置该文件的mime类型,这里对应的mime类型对应为.xlsx格式
{type: 'application/vnd.ms-excel;charset=utf-8'}));
const link = document.createElement('a');
link.href = url;
// 从header中获取服务端命名的文件名
let fileName = decodeURI(res.headers['content-disposition'].substring(res.headers['content-disposition'].indexOf("=")));
fileName = fileName.substring(0,fileName.length-1);
link.setAttribute('download', fileName);
document.body.appendChild(link);
link.click();
})