后端返回base64文件流下载

后端返回base64文件流:

前端处理:
downloadTemplate () {
    this.$API.downloadTemplate().then(({ data }) => {
      const binaryString = atob(data) // 解码base64字符串
      const byteArray = new Uint8Array(binaryString.length) // 创建一个Uint8Array
      for (let i = 0; i < binaryString.length; i++) { // 填充Uint8Array
        byteArray[i] = binaryString.charCodeAt(i) // 获取每个字符的Unicode编码
      }
      const blob = new Blob([byteArray], { type: 'application/vnd.ms-excel' }) // 创建Blob对象
      const objectUrl = URL.createObjectURL(blob) // 创建Object URL
      const a = document.createElement('a') // 创建一个<a>元素
      document.body.appendChild(a) // 将<a>元素添加到DOM中
      a.style = 'display: none' // 隐藏<a>元素
      a.href = objectUrl // 设置<a>元素的href属性为Object URL
      a.download = '链路模板配置.xlsx' // 设置<a>元素的download属性为文件名
      a.click() // 模拟点击<a>元素
    })
  }

  • 9
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Uniapp 中,可以使用以下代码将后端返回base64 字符串下载为 Word 文件: ```javascript // 将 base64 字符串转换为 ArrayBuffer const base64ToArrayBuffer = (base64) => { const binary = atob(base64) const length = binary.length const buffer = new ArrayBuffer(length) const view = new Uint8Array(buffer) for (let i = 0; i < length; i++) { view[i] = binary.charCodeAt(i) } return buffer } // 将 ArrayBuffer 转换为文件并保存到本地 const saveBase64AsFile = (base64, filename) => { const arrayBuffer = base64ToArrayBuffer(base64) const blob = new Blob([arrayBuffer], { type: 'application/octet-stream' }) const url = URL.createObjectURL(blob) const link = document.createElement('a') link.href = url link.download = filename document.body.appendChild(link) link.click() document.body.removeChild(link) URL.revokeObjectURL(url) } // 下载 Word 文件 const downloadWordFile = () => { uni.request({ url: 'your api url', method: 'GET', responseType: 'arraybuffer', // 指定响应类型为 ArrayBuffer success: (res) => { const base64Str = btoa(new Uint8Array(res.data).reduce((data, byte) => data + String.fromCharCode(byte), '')) // 将 ArrayBuffer 转换为 base64 字符串 const filename = 'your filename.docx' saveBase64AsFile(base64Str, filename) }, fail: (err) => { console.log(err) } }) } // 调用示例 downloadWordFile() ``` 其中,`downloadWordFile` 函数使用 `uni.request` 发送 GET 请求获取后端返回的 Word 文件的二进制数据,指定响应类型为 ArrayBuffer,然后将 ArrayBuffer 转换为 base64 字符串,并调用 `saveBase64AsFile` 函数将其下载为 Word 文件。在调用 `btoa` 函数将 ArrayBuffer 转换为 base64 字符串时,需要先将 ArrayBuffer 转换为 Uint8Array 类型,再使用 `reduce` 方法将其转换为字符串。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值