从后端接收base64格式数据,前端转换之后报未能加载pdf文档,于是找了一下解决方式,以下方法可以用,也解决了我的问题,在这里我也做一下保留
this.$axios.post(`/xxxxxxxxxxxxxxxxxx/download?id=${row.ID}`,{responseType:'arraybuffer'}).then(res=>{
if(res.data.data) {
var binary_string = window.atob(res.data.data)
var len = res.data.data.length;
var bytes = new Uint8Array(len);
for (var i = 0; i < len; i++) {
bytes[i] = binary_string.charCodeAt(i);
}
let blob = new Blob([bytes.buffer], { type: 'application/pdf' })
var url = URL.createObjectURL(blob);
// 预览
// window.open(url);
// 下载
let a = document.createElement("a");
document.body.appendChild(a);
a.href = url;
a.download = fileName + '.pdf'; //命名下载名称
a.click(); //点击触发下载
window.URL.revokeObjectURL(url); //下载完成进行释放
} else {
this.$message.error(e.data.message);
}
}).catch(err=>{})
上述代码,我的是接口无法写上{responseType:‘arraybuffer’},不然没有任何回应,不加上就下载成功了