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


    前端请求设置 responseType: “blob”

    后台接口返回的文件流如下:
    在这里插入图片描述
    在这里插入图片描述

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

    <iframe  :src="previewUrl" frameborder="0" style="width: 500px; height: 500px;"></iframe>
    
    • 1

    1、预览

    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');// 浏览器新打开窗口        
    },
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    2、下载

    // 下载        
    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        
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
  • 相关阅读:
    企业信息化与电子商务>供应链信息流
    kylin-v10安装达梦数据库
    echarts图表toolbox工具箱配置
    微服务-网关设计
    系统设计原则及技术指标
    Blender 学习笔记(一)
    系统开发视角下的诊断 ———— 车身控制(B)诊断故障
    【java】java线程池
    2.Seq2Seq注意力机制
    MFC 绘图
  • 原文地址:https://blog.csdn.net/xilejie/article/details/133710652