Bash64转文件并下载

4 篇文章 0 订阅

Bash64转文件并下载


// 导出按钮
    handleExport() {
      this.$confirm('确认导出?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        let data = {...this.filters};
        console.log(data);//return;
        this.filtersing = true;
        getOrdersExport(data).then(res => {
          let bashToFile = res.data.datas;
           console.log(bashToFile)
           let downloadFileUrl = this.createDownloadFileUrl('order', bashToFile)
           console.log(downloadFileUrl)
           //下载文件
           setTimeout(() => {
            window.open(downloadFileUrl)
            this.filtersing = false;
           },100)
        })
      }).catch(() => {

      });
    },

Bash-64转文件方法:

	// 生成Blob
	dataURLtoFile(dataurl, filename) { 
      var arr = dataurl.split(',');
      var mime = arr[0].match(/:(.*?);/)[1];
      //atob() 方法用于解码使用 base-64 编码的字符串
      var bstr = atob(arr[1]);
      var n = bstr.length;
      //Uint8Array 数组类型表示一个8位无符号整型数组,创建时内容被初始化为0。
      //创建完后,可以以对象的方式或使用数组下标索引的方式引用数组中的元素。
      var u8arr = new Uint8Array(n);
      while (n--) {
      //charCodeAt() 方法可返回指定位置的字符的 Unicode 编码
        u8arr[n] = bstr.charCodeAt(n);
      }
      //js有一个底层的Blob对象,它是一个包含有只读原始数据的类文件对象。
      //File对象就继承自Blob对象并扩展了系统文件的支持。
      //Blob Blob(
	  //	[optional] Array parts,
	  //	[optional] BlobPropertyBag properties
	  //);
	  /**
	  *
	  * > https://www.jianshu.com/p/d175e6058b1b --- 引用
	  *	第一个参数是一个数组,里面可以是DOMString,也可以是TypeArray或者Blob。
	  *	TypedArray:在JS语言中,数值只有一种称为Number的类型,
	  *	而不像其他后端语言一样,	区分是整型还是浮点型,是有符号的还是无符号的,
	  *	是32位的还是64位的。Typed Array的主要是为了弥补JS处理二进制格式数据的不足,
	  *	利用Typed Array可以非常方便地操作二进制的数据。
	  *	TypedArray包括Int32Array、Uint8Array、Float32Array等,
	  *	也可以是连续的内存缓冲区ArrayBuffer或者工具类DataView。
	  *	第二参数是该文件的mime类型,不同的文件类型可以参考w3c的mime手册。
	  **/

      return new Blob([u8arr], { type: mime });
    },
    createDownloadFileUrl(fileName, file) {
      // application/zip 需要改成要下载文件的类型
      const blob = this.dataURLtoFile(`data:application/zip;base64,${file}`, fileName); 
      //当前文件的最后修改日期
      blob.lastModifiedDate = new Date();
      blob.name = fileName;
      //返回下载地址
      return URL.createObjectURL(blob);
    },




仅作为记录个人工作日常遇见的一些问题以及解决方案

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值