我想使用 javascript 在客户端创建和保存一个大的 .csv 文件。之前已经提出并回答了这个问题(例如,参见1、2、3或4),这归结为两种方法(除其他外):
使用FileSaver.js来实现 w3c 的
saveAs()
:var lines = ["line 1,cell 11,cell 12\n","line 2,cell 21,cell 22\n"]; var type = "text/csv;charset=utf-8"; var blob = new Blob(lines,{"type":type}); saveAs(blob,"download.csv");
使用
a[download]
和数据uri:var lines = ["line 1,cell 11,cell 12\n","line 2,cell 21,cell 22\n"]; var type = "text/csv;charset=utf-8"; var downloader = $('<a download href="data:'+type+','+escape(lines.join(''))+'"></a>') .appendTo("body") downloader[0].click(); downloader.remove();
我的问题是我的文件可能很大:1800 万行和 2.5 Gb(我希望能够处理更多)。创建lines
使用过多的内存并使站点崩溃。但是没有理由lines
仅仅为了将其保存到硬盘驱动器而将其存储在浏览器的内存中。有没有办法使用javascript创建渐进式下载(换句话说,开始下载但在我计算它们时继续附加行)?还是我唯一的选择是将文件作为单独的块下载,然后用户必须将它们连接在一起?