AngularJS:如何右键单击要下载文件的链接?

时间:2016-09-19 21:51:30

标签: javascript angularjs xml

我希望能够不仅显示xml,还可以选择从服务器下载文件。

在html中,单击该图标将执行下载功能:

<span class="glyphicon glyphicon-download-alt" ng-click="download(report.filename)"></span>

下载功能在我的controller.js中定义

   $scope.download = function(filename) {
        fmFactory.getXMLFile(filename).then(function (response) {
            var file = new Blob([response.data], {type: 'application/xml'});
            var fileURL = window.URL.createObjectURL(file);
            $window.open(fileURL, '_blank', 'width=700, height=800');
        });
    }

通过这种实现,我能够在新的弹出窗口中显示文件内容(在本例中为xml)。但是,当我右键单击该图标并选择另存为文件时,它只保存为html。如何下载实际的xml文件?

修改: 我还试图提供文件的链接,而不向webservices发出任何请求。包含所有文件的文件夹位于[tomcat] / webapps / data / fm中,webapps是部署war(ristoreService.war)的地方。

enter image description here

所以现在我的html变成了:

<a ng-href="http://rcdrljboss01a:9880/ristoreService/data/fm/{{report.filename}}.xml">
                    <span class="glyphicon glyphicon-download-alt"></span></a>

当我启动网页并点击该链接时,它会重定向到http://rcdrljboss01a:9880/ristoreService/data/fm/TRF011063_08042016001105.xml并以xml格式显示错误Full authentication is required to access this resource,请参见下图:

enter image description here

我确实用oauth和spring安全保护了网站。验证在登录时完成,之后为所有http请求保存access_token。但是使用href,它根本不与webservice通信。只要运行tomcat实例的用户risdev有权访问该文件,它就应该可以工作。事实上,用户risdev确实拥有文件位置的读取权限。

我在chrome中打开了开发工具,页面错误令人困惑:&#34;无法读取localStorage&#34;。为什么它与localStorage有关? enter image description here

0 个答案:

没有答案