代码之家  ›  专栏  ›  技术社区  ›  zorza

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

  •  2
  • zorza  · 技术社区  · 11 年前

    我有一个简单的 节点.js + 恢复 具有标准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);
    });

    它应该做的是创建CSV文件并返回它。

    当我简单地在web浏览器中输入端点地址并点击回车键时,效果很好。文件下载正确。

    但当我尝试做同样的事情,但不是使用浏览器的地址栏时,我使用Restangular,如下所示:

    Restangular.one('download').get().then(function (res) {
        console.log(res);
    });

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

    有没有办法使用Restangular实现这一点?或者我需要用其他东西来做这个?

    1 回复  |  直到 11 年前
        1
  •  8
  •   Tomislav    11 年前

    我不确定Restangular是否能做到这一点,但我正在使用 FileSaver 这类事情的脚本。将文件保护程序添加到HTML头部,然后:

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