如何使用AngularJS下载基于生成的String的文本文件?

时间:2017-03-12 20:48:10

标签: angularjs file download

当用户点击按钮时,我正试图让AngularJS触发文件下载。

应下载的文件必须包含脚本执行期间生成的数据,因此文本文件的内容应该从AngularJS中的基本字符串构建。

我该如何实现?

以下是一些关于我如何想象这将起作用的模型代码:

var fileContent = 'foobar';
$scope.download = function() {
  filedownload.run(fileContent, 'filename.txt');
}

2 个答案:

答案 0 :(得分:2)

为了实现这一目标,您必须在HTML中创建一个标记:

<a download="content.txt" ng-href="{{ url }}">download</a>

控制器:

var content = 'file content for example';
var blob = new Blob([ content ], { type : 'text/plain' });
$scope.url = (window.URL || window.webkitURL).createObjectURL( blob );

并启用网址:

app = angular.module(...);
app.config(['$compileProvider',
    function ($compileProvider) {
        $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|tel|file|blob):/);
}]);

来源: How do you serve a file for download with AngularJS or Javascript?

答案 1 :(得分:1)

在简单的情况下,您可以使用Data URI

创建链接
var fileContent = 'foobar';
$scope.download = 'data:text/plain;base64,' + btoa(fileContent);

然后在HTML模板中使用它:

<a href="{{download}}">click here to download</a>

您可能需要根据字符串调整MIME类型。