使用Restangular请求从REST API下载文件

zor*_*rza 2 javascript node.js angularjs restify restangular

我有一个简单的node.js + Restify后端,标准的CORS设置和这个端点:

var file = '1,5,8,11,12,13,176,567,9483';

server.get('/download', function(req, res, next) {
  res.set({"Content-Disposition": "attachment; filename='numbers.csv'"});
  res.setHeader("Content-type", "text/csv");
  res.send(file);
  return next();
}, function(err) {
  res.send(err);
});
Run Code Online (Sandbox Code Playgroud)

它想要做的是创建CSV文件并将其返回.

当我只是在网络浏览器中键入端点地址并按Enter键时,它的效果很好.文件正确下载.

但是,当我尝试做同样的事情,但我没有使用浏览器的地址栏,而是使用Restangular:

Restangular.one('download').get().then(function (res) {
    console.log(res);
});
Run Code Online (Sandbox Code Playgroud)

它只是将响应写入控制台,但没有下载任何文件.

有没有办法使用Restangular?或者我可能需要为此使用别的东西?

Tom*_*lav 8

我不确定Restangular是否可以做到这一点,但我正在使用FileSaver脚本来做这样的事情.将Filesaver添加到HTML头,然后:

Restangular.one('download').get().then(function (res) {
    var file = new Blob([res], { type: 'text/csv' });
    saveAs(file, 'something.csv');
});
Run Code Online (Sandbox Code Playgroud)