Web UI を使用してローカル CSV ファイルを読み込んでおり、HTML5 FileReaderインターフェイスを使用してローカル ファイル ストリームを処理しています。これはうまくいきます。
ただし、最初のロード後に、読み取られるファイルを継続的に更新したい場合があります。問題が発生しています。FileReader API に関係があるのではないかと思います。具体的には、最初のファイルの読み込み後、ファイルへの参照を維持します。次に、ファイルのサイズが大きくなったことを検出すると、ファイルslice
の新しい部分を削除して、新しい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 に気付いていない何かが起こっているのかはわかりません。