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

Can files be updated and read using the JavaScript FileReader interface?

我正在使用网络 UI 和 HTML5 FileReader 接口读取本地 CSV 文件来处理本地文件流。这很好用。

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

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

这里的源代码太多了post,这里是一些伪代码:

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文件第一次加载时的输出是一个字符串,但文件更新后是一个空字符串。我不确定问题是出在我的 slice 方法上,还是 FileReader 发生了一些我不知道的事情。

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

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