我创建了一个 Web 应用程序来清理 CSV/TSV 数据。该应用程序允许我上传 CSV 文件、读取它、修复数据,然后下载包含正确数据的新 CSV 文件。我遇到的一个挑战是下载超过 2500 行的文件。浏览器崩溃并显示以下错误消息:
"Aw, Snap! Something went wrong while displaying this webpage..."
为了解决这个问题,我更改了程序以下载多个不超过 2500 行的 CSV 文件,直到所有数据都下载完毕。然后我会将下载的 CSV 文件组合成一个最终文件。这不是我正在寻找的解决方案。处理超过 100,000 行的文件,我需要下载 1 个文件中的所有内容,而不是 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 列)
ps 我在谷歌浏览器中做所有这些,它允许文件上传。所以该解决方案应该可以在 Chrome 中运行。