/**
* @desc download 下载封装
* @ params { }
*/
const downloadPost = (url, params = {}, filename, onProgress) => {
return new Promise((resolve, reject) => {
try {
axios
.post(url, params, {
responseType: 'blob',
onDownloadProgress: onProgress
})
.then(res => {
if (!(res.data instanceof Blob)) {
NotifyMethod('下载失败啦!');
reject(new Error('下载失败啦!'));
} else {
let blob = res.data;
if (window.navigator.msSaveOrOpenBlob) {
navigator.msSaveBlob(blob, file.fileName);
} else {
let aEle = document.createElement('a');
aEle.href = window.URL.createObjectURL(blob);
if (!filename) {
// 没传文件名,就用后台的filename, 后台也没有传就。。。。
let res_header = res.headers['content-disposition'];
if (res_header && res_header.indexOf('filename=') !== -1) {
filename = res_header.split('filename=')[1];
} else if (
res_header &&
res_header.indexOf('fileName=') !== -1
) {
filename = res_header.split('fileName=')[1];
}
filename = decodeURIComponent(filename || '');
}
aEle.download = filename;
aEle.click();
window.URL.revokeObjectURL(aEle.href);
}
resolve();
}
});
} catch (err) {
console.err(err);
reject(err);
}
});
};
使用
export ImportData = params => axios.downloadPost( '下载接口路径', params);

5194

被折叠的 条评论
为什么被折叠?



