JavaScript处理后端返回PDF⽂件流,在线预览下载PDF⽂件
在实际开发业务中,遇到这⼀需求,即后端返回的pdf⽂件,是以base64⽂件流的⽅式,在此不便操作接⼝响应等操作,便以上传⼀个⽂件转化为⽂件流的形式模拟
实际应⽤时,base64Img = res.data即可,以下⽅法为不使⽤其他插件可快速实现⽂件流转pdf,在线预览和下载,如需pdf⽂件流转图⽚预览且不可下载
请参考此篇随笔
<%input type="file" name="" id="imgfile">
<script>
var base64Img = ''; // 响应数据
var fileReader = new FileReader();
base64Img = sult;
showAgreementBook(base64Img)
}
}
// base64⽂件流转为blob
function dataURItoBlob(base64Data) {
var byteString;
if (base64Data.split(',')[0].indexOf('base64') >= 0)
byteString = atob(base64Data.split(',')[1]); //base64 解码
else {
byteString = unescape(base64Data.split(',')[1]);
}
var mimeString = base64Data.split(',')[0].split(':')[1].split(';')[0];
var ia = new Uint8Array(byteString.length); //创建视图
for (var i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
var blob = new Blob([ia], {
type: mimeString
});
return blob;
}
function showAgreementBook(data) {
var blob = dataURItoBlob(data)
// for IE 兼容IE,弹出⽤户操作框,⽤户可⾃⾏选择下载或打开
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(blob);
} else {如何下载javascript
let fileURL = ateObjectURL(blob)
// 会⽣成类似 blob:XXX/XXXXX-XXXXX-XXXXX-XXXXX-526fc462d662 地址,并在新标签页打开,可下载
window.open(fileURL)
}
}
</script>
下图为处理IE兼容效果:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论