【发布时间】:2015-02-16 13:52:03
【问题描述】:
我一直在尝试使用 Javascript 存储 Excel 文件,但我无法让它在所有浏览器上运行。我使用的第一个技术是 BASE64 结合数据 URL。这在 Chrome 和 Firefox 中运行良好,但 IE en Safari 不适用于这种技术。
newlink = document.createElement('a');
newlink.setAttribute('href', 'data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,' + response.data);
newlink.setAttribute('download', 'test.xlsx');
newlink.click();
我也尝试过 Blob 东西.. 但它似乎不适用于 PDF、Excel 和 MS Word 等二进制文件。
var report = response;
var str = atob(report.data);
var blob = new Blob([str], { type: report.type});
saveAs(blob, 'report.csv');
这适用于 CSV 文件,但当我对 Excel 或 Word 执行相同操作时,文件已损坏。
我正在使用 AngularJS 进行 REST 调用并通过标头使用令牌身份验证,因此仅使用 URL 并执行 window.open(url) 将不起作用,因为您将无权执行该请求。我尝试了 $resource 和 $http 但两者都得到了相同的结果。 REST API 有效,因为当我公开 URL(无需身份验证)并直接使用浏览器访问 URL 时,它会正确下载文件并且我可以打开它。因此,当我创建 Blob 时,似乎出了点问题。
有人知道如何解决这个问题吗?
【问题讨论】:
标签: javascript angularjs excel pdf