$ http.post成功后的AngularJS文件下载

时间:2015-02-24 22:18:57

标签: angularjs

我目前有一个角度服务,其中请求被发送到后端以生成文件,前端和后端都共享一个请求ID,以便稍后为该任务进行通信。

文件生成完成后,后端发回一个成功标志,其中包含"表格api / filegenerator / requestID:/ download"的下载URL,在调用时,生成的文件将被传递回来。

如何调用$ http.post(...)。success(),我可以直接调用该下载链接而无需用户交互? (没有下载按钮或HTML中的任何内容)

1 个答案:

答案 0 :(得分:3)

您可以使用$ window.location

$http.post(...)
  .then(function(url) {
    $window.location = url;
  }

或模拟用户点击假冒按钮

function downloadURIWithFakeClick(uri, name) {
  var link = document.createElement("a");
  link.download = name;
  link.href = uri;
  link.click();
}

downloadURIWithFakeClick(url);

您可以在此示例中看到两个解决方案http://plnkr.co/edit/WbNvAth8tP1yR3sRmkAw?p=preview