记录一下关于blob下载问题
1.封装了一个供下载使用的方法
export function PostExport(code, paramJson) {
return new Promise((resolve, reject) => {
var json = { code: code, request: paramJson };
var type = { responseType: "blob" };
axios
.post(
context.$net.PAGE_URL,
qs.stringify({ requestData: JSON.stringify(json) }),
type
)
.then(res => {
resolve(res.data);
})
.catch(err => {
reject(err.data);
});
});
}
2.使用的时候根据封装的方法(此方法是下载压缩文件)
PostExport("E0004", paramJson).then(res => {
const blob = new Blob([res], { type: "application/zip" });
const downloadElement = document.createElement("a");
const href = window.URL.createObjectURL(blob); //创建下载的链接 (可以是 File 对象、Blob 对象或者 MediaSource 对象)
downloadElement.href = href;
downloadElement.download = `签约协议${this.getCurrent[0]}.zip`; //下载后文件名
document.body.appendChild(downloadElement); //将a节点添加到document.body末尾
downloadElement.click(); //点击下载
document.body.removeChild(downloadElement); //下载完成移除元素
window.URL.revokeObjectURL(href); //释放blob对象
});
}
2.1(此方法是下载excel文件)
PostExport("R0027", paramJson).then(res => {
window.console.log(res);
var blob = new Blob([res]);
var downloadElement = document.createElement("a");
var href = window.URL.createObjectURL(blob); //创建下载的链接
downloadElement.href = href;
downloadElement.download = `好日子赎回明细${this.getCurrent[0]}.xls`; //下载后文件名
document.body.appendChild(downloadElement);
downloadElement.click(); //点击下载
document.body.removeChild(downloadElement); //下载完成移除元素
window.URL.revokeObjectURL(href); //释放掉blob对象
});