function downloadFile(vms) {
let param = new FormData();
param.append("id",vms.id);
vms.axios({
method: 'post',
url: BASICURL+'/downloadPdf.do',
data: param,
headers: {
"token": vms.cookie
},
responseType: 'blob'//注意:一定要定义返回数据类型,否则获取到的文件流无法解析,下载的文件会无数据
}).then(function (response) {
console.log(response);
if(response.status == '200'){
download(response.data, vms.tableData.enterpriseChName+".pdf");
vms.openMessage("success","下载成功!");
}else{
vms.openMessage("error","下载失败!");
}
console.log(response);
})
.catch(function (error) {
console.log(error);
});
}
function download(content, fileName) {//返回数据流处理
const blob = new Blob([content]);
const url = window.URL.createObjectURL(blob);
let dom = document.createElement('a');
dom.style.display = 'none';
dom.href = url;
dom.setAttribute('download', fileName);
document.body.appendChild(dom);
dom.click()
}
由于自己之前没有注意请求时设置返回数据类型 responseType: 'blob',导致下载的pdf获取到数据,但无法解析,以至于打开文件一直是空白无数据的,还以为是自己后端写错了导致返回的数据无法解析,搞了好久才发现是这个问题坑了自己,哭唧唧的,在此记录一下,提醒自己