我正在使用angularjs,并想提供一个下载按钮。
问题:在文件从后台返回之前,该按钮会在后台触发一个长时间运行(15秒)的进程。同时,用户不应该被阻止。
所以我想我可以在后台用angularjs点击获取文件,并在收到异步文件时提供下载。
<a ng-href="{{service.pdf()}}" target="_blank">download</a>
function pdf() {
return "http://path.to.the.service/filename.pdf";
}这样我就可以直接打开另一个页面。这是可行的,但我想在后台获取它,而不是打开一个新窗口。
这有可能吗?
发布于 2016-02-20 01:26:25
也许最好的解决方案是为你的按钮使用这个html代码?让我们试试这个:
<a ng-href="{{service.pdf()}}" target="_self">download</a>但是你也可以用AngularJS来做这件事。例如,您的代码如下所示:
<button type="button" ng-click="downloadFile()" name="button">Download file</button>ng-单击call you downloadFile()函数。您可以在此函数中执行下载操作:
$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文件,你应该添加更多的代码。
https://stackoverflow.com/questions/35510476
复制相似问题