将base64编码的字符串解码为xls

时间:2017-10-31 08:22:16

标签: javascript angular typescript

我已经根据用户的请求链接了一个JSON响应来获取excel文档,响应的方式是

  downloadTemplate() {
  this.fetchData.fetchDownloadTemplate().subscribe(
  res => {
    let docString = atob(res.document);
    let format = res.format;
    let fileName = res.docTitle;

    let file = new Blob([docString], {type: "text/xls"});

    let url = URL.createObjectURL(file);
    let dwldLink = document.getElementById('template_link');
    dwldLink.setAttribute("href", url);
    dwldLink.setAttribute("download", fileName);
    document.body.appendChild(dwldLink);
    dwldLink.click();
  },
  err => {
    console.log(err.responseJSON.message);
  })
  }

我试图通过使用atob()函数解码文档密钥来处理前端的API。

nonlin

但是数据被破坏了。在进行一些研究时我知道atob()使用ASCII字符集进行解码,而我使用字符集UTF-8进行了编码。

你能否建议用打字稿中的UTF-8字符集解码数据的替代方法,因为我工作的angular(v4 +)项目在使用JS验证器时会抛出错误。

1 个答案:

答案 0 :(得分:0)

在搜索支持Unicode到二进制转换的合适模块时,我遇到了

  

https://github.com/dankogai/js-base64#decode-vs-atob-and-encode-vs-btoa

     

Using Javascript's atob to decode base64 doesn't properly decode utf-8 strings

Base64.decode()支持utob decrpyption。

该模块支持angular(v4 +),还为Typescript(2)

添加依赖项