将Client Side Json下载为CSV

时间:2013-03-28 18:47:06

标签: json node.js csv angularjs download

我使用angularJS前端框架和nodejs / express作为后端服务器来发送和接收JSON。后端向前端发送了一个大的JSON对象,我想知道是否可以从CSV格式的前端下载JSON对象。

数据以角度控制器中的范围变量$scope.data存储为json。然后我将数据转换为变量$scope.CSVdata中CSV格式的字符串。如何从客户端浏览器下载CSVdata?

我知道nodejs可以设置为以CSV格式发送文件,但保持后端干净的JSON api会很不错。

1 个答案:

答案 0 :(得分:8)

引用this post我已经在一起快速演示如何使用AngularJS完成此任务:

JavaScript Demo (Plunker)

我已将引用的Base64代码包装在服务中,并以下列方式使用它:

$scope.downloadCSV = function() {
  var data = Base64.encode($scope.CSVData);
  window.location.href = "data:text/csv;base64," + data;
};

此方法有are some disadvantages,但正如评论中所述。我已经从维基百科页面上提取了一些关于这个主题的要点。前往那里查看完整列表。

  
      
  • 数据URI不会单独缓存其包含的文档(例如CSS或HTML文件),因此会下载编码数据   每次重新下载包含的文件。
  •   
  • Internet Explorer 8将数据URI限制为最大长度32 KB。 (Internet Explorer 9没有此限制)
  •   
  • 在IE 8和9中,数据URI只能用于图像,但不能用于导航或JavaScript生成的文件下载。[7]
  •   
  • Base64编码数据URI的大小是其二进制等值的1/3。 (但是,如果这个开销减少到2-3%   HTTP服务器使用gzip压缩响应)
  •   
  • 数据URI不像普通链接文件那样携带文件名。保存时,指定MIME类型的默认文件名为   通常使用。
  •   
  • [。 。 。 ]
  •