将客户端Json下载为CSV

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

数据以angular色控制器中的作用域variables$scope.data存储为json。 然后,我将数据转换为variables$scope.CSVdata中的CSV格式的string。 如何从客户端浏览器下载CSV数据?

我知道nodejs可以设置为以CSV格式发送文件,但是将后端保持干净的JSON API是很好的。

引用这篇文章,我已经将AngularJS如何完成快速演示:

JavaScript演示(Plunker)

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

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

但是,这个方法有一些不足之处 ,正如评论中提到的那样。 我已经从这个主题的Wikipedia页面中拉出了一些要点。 头在那里的完整列表。

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