postDownload(url, params = {}, data = {}) {
return new Promise((resolve, reject) => {
axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8';
axios.post(url, params, {
params: data,
responseType: "blob"
})
.then(response => {
if (response.status == 204) {
window.vm.$message('无可导出数据')
return
}
let headers = response.headers;
let name = headers['content-disposition'];
let filename = "";
var t = /filename="([^;]*);?"/i.exec(name);
null === t && (t = /filename=([^;]*);?/i.exec(name));
if (null !== t && t.length > 1) {
filename = decodeURIComponent(t[1]);
}
let blob = new Blob([response.data], {
type: "application/octet-stream"
});
let downloadElement = document.createElement('a');
let 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);
resolve(response.data);
}, err => {
reject(err)
})
})
}
网友评论