使用Angular JS下载大型CSV文件

时间:2016-02-22 01:40:24

标签: javascript angularjs csv

我正在开发一个项目,当用户点击下载按钮时,我向运行Node with Restify的服务器发出XHR请求。服务器的响应是CSV格式的字符串。我在下载非常大的文件时遇到了一些问题(在我的特定情况下,返回的CSV字符串长度为6,406,729个字符)。在小型CSV文件上,我的方法在Chrome上完美运行,但是对于这个非常大的文件,没有任何下载。

networkService.search($scope.query).then(function(data) {
    //data is a string. When it is 6,406,729 chars long, this code doesn't 
    //work.  I've tested this code on strings that are 100 chars long 
    //and it works perfectly
    var hiddenElement = document.createElement('a');
    hiddenElement.href = 'data:attachment/csv,' + encodeURI(data);
    hiddenElement.target = '_blank';
    hiddenElement.download = fileName;
    hiddenElement.click();
})
.catch(function() {
    //handle error
})
.finally(function() {
   //clean up code
   // We reach this point in the code no matter how long "data" is
   console.log('reached finally');
});

设置hiddenElement.href的值后,长度为8,746,983个字符。这告诉我,encodeURI正常工作,并且它后面的东西可能会失败(我的猜测是它的点击方法)。 Stack Overflow上的大多数帖子似乎都建议我下载CSV的方法,正如我之前提到的,它适用于相当小的CSV文件而没有任何问题,只是不适用于我的大型CSV。

我收集的另一个奇怪的信息是,如果我复制GET networkService请求并将其放入Chrome的搜索栏,我就能够下载大文件。对我来说,这表明我的Angular代码有问题,但我再也不确定是什么问题。

非常感谢任何帮助。

0 个答案:

没有答案