如何使用AngularJS下载文件?

时间:2014-03-08 12:00:20

标签: angularjs angularjs-directive download angularjs-scope angularjs-service

我想在视图中列出所有文件(来自目录)。当我点击其中任何一个时。然后必须下载相应的文件。 注意:我在Windows机器上工作。

我有以下代码,

控制器代码:

$scope.files = [{"name":"aaa.txt", "path":"C:\\Documents and Settings\\Administrator\\Desktop\\MyFolder\\aaa.txt"},
                {"name":"bbb.PNG", "path":"C:\\Documents and Settings\\Administrator\\Desktop\\MyFolder\\bbb.PNG"},
                {"name":"ccc.xlsx", "path":"C:\\Documents and Settings\\Administrator\\Desktop\\MyFolder\\ccc.xlsx"}];

MyFile.tpl.html

<div ng-repeat="file in files"> 
     <a target="_self" download="{{file.name}}" href="{{file.path}}">{{file.name}} </a>
</div>

但它没有按预期工作。

如果我使用href="{{file.path}}"ng-href="{{file.path}}"unsafe:会自动附加href网址。

我的角度版本是1.2.7,所以我尝试在我的控制器中添加以下代码

angular.module('myModule', [], function ($compileProvider) {

    $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file):/);

});

href。

中仍存在unsafe:

如果删除unsafe:

,我认为我无法下载

因为我尝试使用硬编码路径,例如:href or ng-href="C:\\Documents and Settings\\Administrator\\Desktop\\MyFolder\\bbb.PNG"但无法下载文件。

注意:无论是\\还是/都不是问题。两者都不起作用 我的代码出了什么问题。怎么能实现这个目标?

1 个答案:

答案 0 :(得分:0)

尝试使用以下代码

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

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