• vue 预览 有token验证的 doc、docx、pdf、xlsx、csv、图片 并下载


    预览 doc我也不会

    //docx
    <div v-if="previewType == 'docx'"  ref="iframeDom" style="border: none; width: 100%; height: 100%"></div>
    import { renderAsync } from "docx-preview";
    let iframeDom: any = ref();
    axios({
          url: docURL,
          method: "get",
          timeout: 100000,
          responseType: "blob",
          headers: {
            token: "xxxxx",
          },
        })
          .then(({ data }) => {
            previewType.value = "docx";
            console.log("iframeDom", iframeDom.value);
            renderAsync(data, iframeDom.value);
          })
          .catch((error) => {
            console.log(error);
          });
      }
    
    //pdf || 图片
     <iframe :src="src" style="border: none; width: 100%; height: 100%" v-if="previewType == 'pdf'">
              <p>您的浏览器不支持 iframe 标签,请从列表中下载预览</p>
     </iframe>
      previewType.value = "pdf";
        src.value =  docURL
    previewType.value = "img";
        src.value =  docURL
            
    //xlsx 、csv
    import LuckyExcel from 'luckyexcel'
     <div v-if="previewType == 'xlsx'" id="mysheet" style="margin:0px;padding:0px;width:100%;height:85vh;"></div>
    previewType.value = "xlsx";
        LuckyExcel.transformExcelToLuckyByUrl(docURL,
          "", (exportJson: any, luckysheetfile: any) => {
            if (exportJson.sheets == null || exportJson.sheets.length == 0) {
              alert("文件读取失败!");
              return;
            }
            // 销毁原来的表格
            window.luckysheet.destroy();
            // 重新创建新表格
            window.luckysheet.create({
              container: 'mysheet', // 设定DOM容器的id
              showtoolbar: false, // 是否显示工具栏
              showinfobar: false, // 是否显示顶部信息栏
              showstatisticBar: false, // 是否显示底部计数栏
              sheetBottomConfig: false, // sheet页下方的添加行按钮和回到顶部按钮配置
              allowEdit: false, // 是否允许前台编辑
              enableAddRow: false, // 是否允许增加行
              enableAddCol: false, // 是否允许增加列
              sheetFormulaBar: false, // 是否显示公式栏
              enableAddBackTop: false, //返回头部按钮
              data: exportJson.sheets, //表格内容
              title: exportJson.info.name //表格标题
            });
          });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60

    下载

    pdf
    axios({
          url: downURL,
          method: "get",
          timeout: 100000,
          responseType: "blob",
          headers: {
            token: "xxxx",
          },
        }).then(({ data }) => {
    
          const aLink = document.createElement("a");
          const objectUrl = window.URL.createObjectURL(new Blob([data], { type: "application/pdf" }));
          document.body.appendChild(aLink);
          aLink.style.display = "none";
          aLink.href = objectUrl;
          aLink.download = infoData.value.fileName;
          aLink.click();
          document.body.removeChild(aLink);
          return
        });
    
    图片
    var image = new Image();
        image.setAttribute("crossOrigin", "anonymous");
        image.onload = function () {
          var canvas = document.createElement("canvas");
          canvas.width = image.width;
          canvas.height = image.height;
          var context: any = canvas.getContext("2d");
          context.drawImage(image, 0, 0, image.width, image.height);
          var url = canvas.toDataURL("image/png");
    
          var a = document.createElement("a");
          var event = new MouseEvent("click");
          a.download = down.value.split('.')[0] || "photo";
          a.href = url;
          a.dispatchEvent(event);
        };
        image.src = downURL;  // 指定图片的来源,这是需要我们提供的
        return
    
    其他文档
    window.open(downURL, '_blank')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
  • 相关阅读:
    python疑难杂症(10)---Python函数def的定义分类,包括内置函数、外置函数、匿名函数、闭包函数、生成器函数等
    vs code Conda退出虚拟环境报错 ERROR REPORT
    梳理市面上的2大NFT定价范式和4种解决方案
    application.yml与bootstrap.yml的区别
    Spring中用了哪些设计模式
    SpringCloud(三)Sentinel、Seata、多级缓存
    2.6 Go语言中的Map
    一篇文章带你用动态规划解决打家劫舍问题
    计算机网络实验 第四次 11月1日
    有意思的脑经急转弯API
  • 原文地址:https://blog.csdn.net/weixin_44324124/article/details/132623489