获取方式:
const fileNameEncode = mydata.headers['content-disposition'].split('filename=')[1];
对于获取到的code进行解码
1.一种这样带有%,一种是iso8859-1
2.带有%就用
decodeURI(uri)
iso8859-1就用
escape(url)//变成utf-8
/**
* @description: 导出文件
*/
export function exportApi(params: FormData) {
return downloadQAHttp
.request({
url: Api.export,
method: 'GET',
params: params,
responseType: 'blob',
})
.then((mydata) => {
const fileNameEncode = mydata.headers['content-disposition'].split('filename=')[1];
const fileName = decodeURI(escape(fileNameEncode));
const file = mydata.data;
executeDownload(file, fileName);
});
}`在这里插入代码片`
export function executeDownload(data, fileName) {
if (!data) {
return;
}
const stream: any = data; // 后端用stream返回Excel文件
const blob: any = new Blob([stream], {
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8',
}); //application/vnd.openxmlformats-officedocument.spreadsheetml.sheet这里表示xlsx类型
const downloadElement = document.createElement('a');
const href = window.URL.createObjectURL(blob); // 创建下载的链接
downloadElement.href = href;
downloadElement.download = fileName; // 下载后文件名
document.body.appendChild(downloadElement);
downloadElement.click(); // 点击下载
document.body.removeChild(downloadElement); // 下载完成移除元素
window.URL.revokeObjectURL(href); // 释放掉blob对象
}