美文网首页
解决前端利用blob下载csv因为多语言导致乱码的问题

解决前端利用blob下载csv因为多语言导致乱码的问题

作者: 古城老巷_li | 来源:发表于2021-08-27 15:59 被阅读0次
  • 后台:把文件流获取成二进制形式并用base64加密返回
  • 前端:把返回的二进制window.atob(data.content)解密,利用Uint8Array 数组类型(表示一个8位无符号整型数组)生成blos需要的ArrayBuffer
  • 代码如下:
downloadFile().then(res => {
    //  base64解码
    var binaryString = window.atob(res.data.content)
    var len = binaryString.length
    //  Uint8Array: 8位无符号整数值的类型化数组
    var bytes = new Uint8Array(len)
    for (var i = 0; i < len; i++) {
      //  charCodeAt返回字符串第一个字符的 Unicode 编码(H 的 Unicode 值):
      bytes[i] = binaryString.charCodeAt(i)
    }
    const blob = new Blob([bytes.buffer], { type: '.csv' })
    if (window.navigator.msSaveOrOpenBlob) {
      navigator.msSaveBlob(blob)
    } else {
      const elink = document.createElement('a')
      elink.download = '123456.csv'
      elink.style.display = 'none'
      elink.href = URL.createObjectURL(blob)
      document.body.appendChild(elink)
      elink.click()
      document.body.removeChild(elink)
    }
})

如有错误,望请指正。

相关文章

网友评论

      本文标题:解决前端利用blob下载csv因为多语言导致乱码的问题

      本文链接:https://www.haomeiwen.com/subject/kgmmiltx.html