Asp.NetMVC API前後端分離ダウンロードファイル乱符号化問題
1582 ワード
c#コード
フロントエンドコード(react+axios)
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();
})