前端预览、下载二进制文件流(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        
}
相关推荐
卢叁4 分钟前
Flutter之路由监听器
前端·flutter
三翼鸟数字化技术团队8 分钟前
2025前端技术趋势:从智能到沉浸的新时代
前端·ai编程
恋猫de小郭9 分钟前
Android 17 有什么需要适配的?2026 Android 禁止侧载又是什么?
android·前端·flutter
Never_Satisfied14 分钟前
在HTML & CSS中,如何计算CSS特异性
前端·css·html
滕青山17 分钟前
网页源代码查看在线工具 核心JS实现
前端·javascript·vue.js
www_stdio19 分钟前
项目基础准备之Zustand:轻量级 React 状态管理的优雅之选
前端·react.js·typescript
躲在云朵里`23 分钟前
同一账号在同一客户端类型只能登录一次
前端·spring·bootstrap
敲敲了个代码26 分钟前
构建工具的第三次革命:从 Rollup 到 Rust Bundler,我是如何设计 robuild 的
开发语言·前端·javascript·后端·rust
加个鸡腿儿27 分钟前
Nuxt SSR 水合错误处理实践:响应式布局的正确姿势
前端·typescript·nuxt.js
奋斗吧程序媛27 分钟前
使用代理服务器的方式解决跨域问题
前端·javascript·vue.js