首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在angularjs中请求下载aync文件?

如何在angularjs中请求下载aync文件?
EN

Stack Overflow用户
提问于 2016-02-20 00:48:04
回答 2查看 1.3K关注 0票数 0

我正在使用angularjs,并想提供一个下载按钮。

问题:在文件从后台返回之前,该按钮会在后台触发一个长时间运行(15秒)的进程。同时,用户不应该被阻止。

所以我想我可以在后台用angularjs点击获取文件,并在收到异步文件时提供下载。

代码语言:javascript
复制
<a ng-href="{{service.pdf()}}" target="_blank">download</a>

function pdf() {
    return "http://path.to.the.service/filename.pdf";   
}

这样我就可以直接打开另一个页面。这是可行的,但我想在后台获取它,而不是打开一个新窗口。

这有可能吗?

EN

Stack Overflow用户

发布于 2016-02-20 01:26:25

也许最好的解决方案是为你的按钮使用这个html代码?让我们试试这个:

代码语言:javascript
复制
<a ng-href="{{service.pdf()}}" target="_self">download</a>

但是你也可以用AngularJS来做这件事。例如,您的代码如下所示:

代码语言:javascript
复制
<button type="button" ng-click="downloadFile()" name="button">Download file</button>

ng-单击call you downloadFile()函数。您可以在此函数中执行下载操作:

代码语言:javascript
复制
$http.get('/path/to/your/file', { responseType: 'blob' })
.then((response) => {
    var windowUrl = $window.URL || $window.webkitURL;

    var anchor = angular.element('<a></a>');
    anchor
    .attr({
      href: windowUrl.createObjectURL(response.data),
      download: 'file.txt',
    });
    anchor[0].click();
  }
});

此解决方案也适用于具有基于令牌的授权(带有拦截器)的API。但是如果你想在IE和Mozilla中保存blob文件,你应该添加更多的代码。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35510476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档