可以使用 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 -- 它应该像快照一样。
您可以检测到大小已更改这一事实可能是实现的一个缺点。
我正在使用网络 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 -- 它应该像快照一样。
您可以检测到大小已更改这一事实可能是实现的一个缺点。