参考这篇文章,我已经快速演示了如何使用 AngularJS 完成此操作:
JavaScript 演示(Plunker)
我已将引用的 Base64 代码包装在服务中,并按以下方式使用它:
$scope.downloadCSV = function() {
var data = Base64.encode($scope.CSVData);
window.location.href = "data:text/csv;base64," + data;
};
但是,如评论中所述,此方法有一些缺点。我已经从维基百科页面中提取了一些关于这个主题的要点。前往那里查看完整列表。
- 数据 URI 不会与其包含的文档(例如 CSS 或 HTML 文件)分开缓存,因此每次重新下载包含的文档时都会下载编码数据。
- Internet Explorer 8 将数据 URI 的最大长度限制为 32 KB。(Internet Explorer 9 没有这个限制)
- 在 IE 8 和 9 中,数据 URI 只能用于图像,而不能用于导航或 JavaScript 生成的文件下载。 [7]
- Base64 编码的数据 URI 的大小是其二进制等价物的 1/3 倍。(但是,如果 HTTP 服务器使用 gzip 压缩响应,则此开销会减少到 2–3%)
- 数据 URI 不像普通链接文件那样携带文件名。保存时,通常使用指定 MIME 类型的默认文件名。
- [ . . . ]