下载大型 CSV 文件 - href 无意中截断了结果
Downloading large CSV file - href unintentionally truncating results
我正在尝试使用 href 方法下载 CSV 文件,但在将其设置为 href 标记时,数据似乎被截断了。
对于 IE,我使用了 msSaveBlob,它似乎工作正常并且所有数据都已正确下载。
if (navigator.msSaveBlob) { // IE 10+
navigator.msSaveBlob(new Blob([data], { type: 'text/csv;charset=utf-8;' }), filename);
}
//
var csvContent = "data:text/csv;charset=utf-8," + data;
var encodedUri = encodeURI(csvContent);
var link = document.createElement("a");
link.setAttribute("href", encodedUri);
//
link.setAttribute("download", filename);
link.innerHTML = "CSV Link - Placeholder";
document.body.appendChild(link); // Required for FF
link.click();
这些是相对较大的文件,excel 中有 9k 行(大约 500kb)。
有什么想法可以阻止这种截断吗?我应该使用不同的方法吗?谢谢!
使用以下答案解决:
download file using an ajax request
本质上:
var file = new Blob([data], {type: 'text/csv;charset=utf-8;'});
if (window.navigator.msSaveOrOpenBlob) // IE10+
window.navigator.msSaveOrOpenBlob(file, filename);
else { // Others
var a = document.createElement("a"),
url = URL.createObjectURL(file);
a.href = url;
a.download = filename;
document.body.appendChild(a);
a.click();
setTimeout(function() {
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}, 0);
}
我正在尝试使用 href 方法下载 CSV 文件,但在将其设置为 href 标记时,数据似乎被截断了。 对于 IE,我使用了 msSaveBlob,它似乎工作正常并且所有数据都已正确下载。
if (navigator.msSaveBlob) { // IE 10+
navigator.msSaveBlob(new Blob([data], { type: 'text/csv;charset=utf-8;' }), filename);
}
//
var csvContent = "data:text/csv;charset=utf-8," + data;
var encodedUri = encodeURI(csvContent);
var link = document.createElement("a");
link.setAttribute("href", encodedUri);
//
link.setAttribute("download", filename);
link.innerHTML = "CSV Link - Placeholder";
document.body.appendChild(link); // Required for FF
link.click();
这些是相对较大的文件,excel 中有 9k 行(大约 500kb)。 有什么想法可以阻止这种截断吗?我应该使用不同的方法吗?谢谢!
使用以下答案解决: download file using an ajax request
本质上:
var file = new Blob([data], {type: 'text/csv;charset=utf-8;'});
if (window.navigator.msSaveOrOpenBlob) // IE10+
window.navigator.msSaveOrOpenBlob(file, filename);
else { // Others
var a = document.createElement("a"),
url = URL.createObjectURL(file);
a.href = url;
a.download = filename;
document.body.appendChild(a);
a.click();
setTimeout(function() {
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}, 0);
}