将Client Side Json下载为CSV

GTD*_*Dev 7 csv json download node.js angularjs

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

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

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

Jay*_*com 8

参考这篇文章,我一起快速演示如何使用AngularJS完成这项工作:

JavaScript演示(Plunker)

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

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

然而,正如评论中所提到的,这种方法存在一些缺点.我已经从维基百科页面上提取了一些关于这个主题的要点.前往那里获取完整列表.

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