我已经根据用户的请求链接了一个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验证器时会抛出错误。
答案 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)
添加依赖项