如何使用angular发布请求并将文件下载到磁盘?

时间:2015-09-23 18:48:23

标签: angularjs

在angular中,我想下载一个包含用户数据csv的文本文件。通常我有一个带有post动作的表单,但是我希望用户保持在同一页面上,但是返回csv数据时没有任何页面引用。以下是我的帖子命令:

$http({
    url: "api/getUserData",
        method: "POST",
        data:{user_id:app.user_id}
    }).success(function(data, status, headers, config) {
        // data gets returned here
    }).error(function(data, status, headers, config) {
        $scope.status = status;
});

我的问题是,"数据"从帖子回来的是一个csv文件。如何实际获取数据"下载"用户的计算机而不是生活在javascript中?这甚至可能吗?

2 个答案:

答案 0 :(得分:1)

Here 是解决方案的链接。它使用HTML5 FileSaver API将文件保存为BLOB

答案 1 :(得分:0)

你可以这样做:

  1. 创建临时锚点
  2. 编码,您的数据&使用下载属性
  3. 命名文件
  4. 然后,点击它上面的点击事件。
  5. 最后,删除插入的元素。

    $http({
        url: "api/getUserData",
        method: "POST",
        data:{user_id:app.user_id}
    }).success(function(data, status, headers, config) {
    
       // data gets returned here
       var anchor = angular.element('<a/>'); 
    
       angular.element(document.body).append(anchor); // Attach to document
    
       anchor.attr({
           href: 'data:attachment/csv;charset=utf-8,' + encodeURI(data),
           target: '_blank',
           download: 'myFileName.csv'
       })[0].click(); // fire a click event.
    
       anchor.remove(); // Clean it now ...
    
    }).error(function(data, status, headers, config) {
        $scope.status = status;
    });