前端预览、下载二进制文件流(png、pdf)

前端请求设置 responseType: "blob"

后台接口返回的文件流如下:

拿到后端返回的文件流后:

预览

javascript 复制代码
<iframe  :src="previewUrl" frameborder="0" style="width: 500px; height: 500px;"></iframe>

1、预览

javascript 复制代码
view(data) {
     // 文件类型            
     let fileType = this.fileName.slice(this.fileName.length - 3).toUpperCase();
     let myBlob = '';
     //不同文件类型设置不同的type            
     if (fileType == 'PDF') {
          myBlob = new window.Blob([data], { type: 'application/pdf' });
     } else {
          myBlob = new window.Blob([data], { type: 'image/png' });
     }
     const previewUrl = window.URL.createObjectURL(myBlob);
     this.previewUrl = previewUrl;// iframe预览
    // window.open(previewUrl, '_blank');// 浏览器新打开窗口        
},

2、下载

javascript 复制代码
// 下载        
downFile() {
   var data = this.fileData;
   var fileType = this.fileName.slice(this.fileName.length - 3).toUpperCase();
   var blob = "";
   if (fileType == 'PDF') {
       blob = new window.Blob([data], { type: 'application/pdf' });
   } else if (fileType == 'PNG') {
       blob = new window.Blob([data], { type: 'image/png' });
   }
   const a = document.createElement("a");
   const objectUrl = URL.createObjectURL(blob);
   a.setAttribute("href", objectUrl);
   a.setAttribute("download", this.fileName);
   a.click();
   URL.revokeObjectURL(a.href); // 释放url        
}
相关推荐
愚公搬代码5 小时前
【愚公系列】《Web应用安全》003-测试环境的搭建
前端·安全
_codemonster5 小时前
主流前端技术分层选型
前端
2601_963906787 小时前
可自由切割与合并的 PDF 尺寸调整与打印工具
pdf
犹豫的果冻布丁8 小时前
从零给 DeepSeek Harness 写一个壁纸皮肤插件(已开源)
前端·后端
漏刻有时8 小时前
数据可视化Three.js 3D 地图实战:单文件原生实现省域区县拉伸建模
前端
会说话的番茄8 小时前
AI 满嘴跑火车怎么办?给它配个"小抄"
前端·aigc
计算机魔术师8 小时前
AI 权力集中辩论实录:从「token 工厂」到「唯一幸存者」
前端
eric-sjq8 小时前
WanlyFrontend 中文声明式前端语言完全指南:让 0.6B 模型写出漂亮网页
前端
Full Stack Developme8 小时前
跨站请求伪造 (CSRF) 是什么 设计及工作原理
前端·okhttp·csrf
MoSTChillax8 小时前
UI规范设计:从视觉到交互的全面指南
前端·ui·产品经理·设计规范·vibecoding