下载并预览pdf,提示未能加载PDF文档 - vue
后端传一个字符串,前端创建了new Blob,Chrome提示无法加载PDF文档?控制台窗口blob和url,有显示数据,但是但不开,是什么原因呢?后面尝试使用a标签下载,提示无法打开;将base64字符串转换为一个字节。
·
后端传一个字符串,前端创建了new Blob,Chrome提示无法加载PDF文档?
后面尝试使用a标签下载,提示无法打开;
控制台窗口blob和url,有显示数据,但是但不开,是什么原因呢???
网上查到了解决方法,原理暂不清楚:
将base64字符串转换为一个字节
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=>{})
更多推荐
已为社区贡献4条内容
所有评论(0)