我有下面的Javascript代码在客户端导出CSV文件。但是,每次我尝试导出一个大型数组时,Google Chrome都会崩溃。Chrome中允许的数据字符串的限制是多少?有没有可能它达到了Chrome允许的内存限制?如果数据字符串对于Chrome来说太长了,我该如何在客户端导出大型CSV文件?
var csvRows = [...]; //Array with 40000 items, each item is 100 characters long.
var csvString = csvRows.join("\r\n");
var a = document.createElement('a');
a.href = 'data:text/csv;charset=utf-8,' + encodeURIComponent(csvString);
a.target = '_blank';
a.download = 'export.csv';
document.body.appendChild(a);
a.click();
(预期文件大小约为6.4MB)
发布于 2014-09-22 21:26:53
有相同的问题,并使用Blob解决了它。
例如:
csvData = new Blob([csvString], { type: 'text/csv' });
var csvUrl = URL.createObjectURL(csvData);
a.href = csvUrl;
发布于 2016-07-15 15:12:23
我使用下面的函数来下载CSV。在IE/Firefox/Chrome中为我工作
function downloadFile(data, fileName) {
var csvData = data;
var blob = new Blob([ csvData ], {
type : "application/csv;charset=utf-8;"
});
if (window.navigator.msSaveBlob) {
// FOR IE BROWSER
navigator.msSaveBlob(blob, fileName);
} else {
// FOR OTHER BROWSERS
var link = document.createElement("a");
var csvUrl = URL.createObjectURL(blob);
link.href = csvUrl;
link.style = "visibility:hidden";
link.download = fileName;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
}
https://stackoverflow.com/questions/23301467
复制相似问题