一尘不染

从Angular中的服务器下载文本/ csv内容作为文件

angularjs

我正在尝试csv从node.js服务器流式传输文件。服务器部分非常简单:

server.get('/orders' function(req, res) {
  res.setHeader('content-type', 'text/csv');
  res.setHeader('content-disposition', 'attachment; filename='orders.csv');
  return orders.pipe(res); // assuming orders is a csv file readable stream (doesn't have to be a stream, can be a normal response)
}

在我的角度控制器中,我正在尝试做这样的事情

$scope.csv = function() {
    $http({method: 'GET', url: '/orders'});
};

ng-click在我看来,单击按钮时会调用此函数:

<button ng-click="csv()">.csv</button>

我查看了有关从Angular服务器中下载文件的其他答案,但没有找到适合我的方法。有一种常见的方法吗?看起来应该很简单。


阅读 353

收藏
2020-07-04

共1个答案

一尘不染

$http服务返回一个promise具有两个回调方法的,如下所示。

$http({method: 'GET', url: '/someUrl'}).
  success(function(data, status, headers, config) {
     var anchor = angular.element('<a/>');
     anchor.attr({
         href: 'data:attachment/csv;charset=utf-8,' + encodeURI(data),
         target: '_blank',
         download: 'filename.csv'
     })[0].click();

  }).
  error(function(data, status, headers, config) {
    // handle error
  });
2020-07-04