我正在尝试了解如何使用本地文件正确实现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,也许还要解释第一个示例中到底发生了什么。

我应该使用什么选项?

谢谢

最佳答案

看起来第一个示例并没有真正的意义-他们两次分配了reader.onload,所以甚至没有使用执行$emit的第一个分配。

我想说第一个例子有点草率,没有必要。使用您自己的FileReader的唯一原因是:


渴望学习如何使用FileReader API,
由于某种原因需要自定义FileReader
想知道加载文件需要多长时间以及Papa解析内容需要多长时间


我通常会忽略第一个示例,而坚持使用Papa文档中更干净,更简单的示例。

10-05 20:35
查看更多