我创建了一个Web应用程序来清理CSV/TSV数据。该应用程序允许我上传CSV文件,读取它,修复数据,然后下载具有正确数据的新CSV文件。我遇到的一个挑战是下载超过~ 2500行的文件。浏览器会崩溃,并显示以下错误消息:
"Aw, Snap! Something went wrong while displaying this webpage..."
为了解决这个问题,我已经改变了编程方式,下载多个不超过2500行的CSV文件,直到所有数据都下载完毕。然后,我会将已下载的CSV文件合并成一个最终文件。但这不是我要寻找的解决方案。因为我需要处理超过100,000行的文件,所以需要将所有内容下载到一个文件中,而不是40个文件。同时,我也需要一个前端解决方案。
以下是下载CSV文件的代码。我创建了一个隐藏链接,对数据数组(每个元素有1000行)进行编码,并创建了隐藏链接的路径。接着触发点击链接来开始下载。
var startDownload = function (data){
var hiddenElement = document.createElement('a');
var path = 'data:attachment/tsv,';
for (i=0;i<data.length;i++){
path += encodeURI(data[i]);
}
hiddenElement.href = path;
hiddenElement.target = '_blank';
hiddenElement.download = 'result.tsv';
hiddenElement.click();
}
在我的情况下,以上过程适用于每次大约 ~ 2500 行的内容。如果我尝试下载更大的文件,则浏览器会崩溃。我做错了什么,如何在不崩溃浏览器的情况下下载更大的文件?导致浏览器崩溃的文件大小为(12,000行 x 48列)。
附言:我在谷歌浏览器中完成所有操作,该浏览器支持文件上传。因此,解决方案应适用于谷歌浏览器。