可以使用JavaScript FileReader界面更新和读取文件吗?

时间:2016-01-12 01:17:32

标签: javascript csv filereader papaparse

我正在使用Web UI读取本地CSV文件,并使用HTML5 FileReader接口来处理本地文件流。这很有效。

但是,有时我希望在初始加载后连续更新正在读取的文件。我遇到了问题,我认为它可能与FileReader API有关。具体来说,在初始文件加载后,我维护对该文件的引用。然后,当我检测到文件的大小增加时,我slice关闭文件的新部分,并获得一个新的Blob对象。但是,这些新的Blob似乎没有数据。

我正在使用PapaParse来处理CSV解析,但我不认为这是问题的根源(尽管可能是这样)。

源代码太庞大而无法发布,但这里有一些伪代码:

var reader = new FileReader();
reader.onload = loadChunk;
var file = null;

function readLocalFile(event) {
    file = event.target.files[0];
    // code that divides file up into chunks.
    // for each chunk:
    readChunk(chunk);
}

function readChunk(chunk) {
    reader.readAsText(chunk);
}

function loadChunk(event) {
    return event.target.result;
}

// this is run when file size has increased
function readUpdatedFile(oldLength, newLength) {
    var newData = file.slice(oldLength, newLength);
    readChunk(newData);
}

首次加载文件时loadChunk的输出是一个字符串,但在文件更新后,它是一个空字符串。我不确定我的切片方法是否存在问题,或者FileReader是否存在我不知道的问题。

1 个答案:

答案 0 :(得分:1)

File对象的规范不应该允许这样:http://www.w3.org/TR/FileAPI/#file - 它应该像快照一样。

您可以检测到大小已更改的事实可能是实现的缺点。