我想做什么? 上传csv文件并在解析时向用户显示进度。 使用csv-parse库和FileReader来完成这个技巧。
当前行为
文件上传并解析所有内容,但reader.onprogress
始终返回100%。它似乎没有加载块。使用调试器,我发现event.loaded
始终与event.total
相同。对于任何大小的文件都是这种情况,无论是400Kb还是40Mb - 除了在40Mb的情况下,它只需要几秒钟来显示100.代码如下。
let reader = new FileReader();
reader.readAsText(this.file);
reader.onload = () => {
csvParse(reader.result, (err, data) => {
for (let i: number = 0; i < data.length; i++) {
this.jsonData.push(data[i]);
}
});
};
reader.onprogress = (event) => {
if (event.lengthComputable) {
let progress: number = ((event.loaded / event.total) * 100);
console.log(progress);
}
};
reader.onerror = function () {
throw new Error("There was an issue reading the file." + reader.error);
};