我正在尝试了解如何使用本地文件正确实现Papaparse。我看了很多在线资源,他们采用的方法是这样
loadTextFromFile (event) {
if (!event.target.files[0]) {
alert('Upload a file.')
} else {
let file = event.target.files[0];
if (file) {
let reader = new FileReader();
let config = {
delimiter: "",
newline: "",
quoteChar: '"',
escapeChar: '"',
header: true,
trimHeaders: false
};
reader.onload = e => this.$emit('load', Papa.parse(event.target.result, config));
reader.onload = function (event) {
let results = Papa.parse(event.target.result, config);
console.log('PAPA RESULT: ', results.data);
console.log('ROWS:', event.target.result);
};
reader.readAsText(file);
} else {
alert('Please select a file to upload.')
}
}
}
因此他们使用FileReader,并且似乎直到readAsText
中的结尾才加载文件。但是,尽管我仍然需要完全理解代码,但是上面的示例仍然可以完美地工作。
然后还有其他示例,这些示例似乎不需要FileReader即可
loadTextFromFile (event) {
if (!event.target.files[0]) {
alert('Upload a file.')
} else {
let file = event.target.files[0];
if (file) {
Papa.parse(file, {
header: true,
dynamicTyping: true,
complete: function(results) {
console.log(results.data)
}
});
} else {
alert('Please select a file to upload.')
}
}
}
再一次,它可以完美运行。因此,我试图理解的是为什么人们有时会使用FileReader,也许还要解释第一个示例中到底发生了什么。
我应该使用什么选项?
谢谢
答案 0 :(得分:1)
第一个示例似乎并没有什么意义,他们分配了reader.onload
两次,因此甚至没有使用执行$emit
事情的第一个分配。
我想说第一个例子有点草率和不必要。使用您自己的FileReader的唯一原因是:
我通常会忽略第一个示例,并坚持使用Papa文档中更干净,更简单的示例。