当用户点击按钮时,我正试图让AngularJS触发文件下载。
应下载的文件必须包含脚本执行期间生成的数据,因此文本文件的内容应该从AngularJS中的基本字符串构建。
我该如何实现?
以下是一些关于我如何想象这将起作用的模型代码:
var fileContent = 'foobar';
$scope.download = function() {
filedownload.run(fileContent, 'filename.txt');
}
答案 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类型。