js下载base64文件

//根据文件后缀 获取base64前缀 
    getBase64Type (type) {
      switch (type) {
        case 'txt': return 'data:text/plain;base64,'
        case 'doc': return 'data:application/msword;base64,'
        case 'docx': return 'data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,'
        case 'xls': return 'data:application/vnd.ms-excel;base64,'
        case 'xlsx': return 'data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,'
        case 'pdf': return 'data:application/pdf;base64,'
        case 'pptx': return 'data:application/vnd.openxmlformats-officedocument.presentationml.presentation;base64,'
        case 'ppt': return 'data:application/vnd.ms-powerpoint;base64,'
        case 'png': return 'data:image/png;base64,'
        case 'jpg': return 'data:image/jpeg;base64,'
        case 'gif': return 'data:image/gif;base64,'
        case 'svg': return 'data:image/svg+xml;base64,'
        case 'ico': return 'data:image/x-icon;base64,'
        case 'bmp': return 'data:image/bmp;base64,'
      }
    },

//base64转blob
    base64ToBlob(code) {
      const parts = code.split(';base64,');
      const contentType = parts[0].split(':')[1];
      const raw = window.atob(parts[1]);
      const rawLength = raw.length;
      const uInt8Array = new Uint8Array(rawLength);
      for (let i = 0; i < rawLength; ++i) {
        uInt8Array[i] = raw.charCodeAt(i);
      }
      return new Blob([uInt8Array], { type: contentType });
    },

//下载
 downloadFile(fileName, content) {
      const blob = this.base64ToBlob(content); // new Blob([content]);
      if (window.navigator.msSaveOrOpenBlob) {
        navigator.msSaveBlob(blob, fileName);
      } else {
        const link = document.createElement('a');
        link.href = window.URL.createObjectURL(blob);
        link.download = fileName;
 
        //此写法兼容可火狐浏览器
        document.body.appendChild(link);
        const evt = document.createEvent("MouseEvents");
        evt.initEvent("click", false, false);
        link.dispatchEvent(evt);
        document.body.removeChild(link);
      }
    },

 //触发下载
down(){
      this.downloadFile(this.fName,this.getBase64Type(this.fType)+this.fCode)

  },

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值