Я сам исправил это сегодня, изменив код плагина, это оригинальный код:
FileReader.prototype.readAsArrayBuffer = function (file) {
if (initRead(this, file)) {
return this._realReader.readAsArrayBuffer(file);
}
var totalSize = file.end - file.start;
readSuccessCallback.bind(this)('readAsArrayBuffer', null, file.start, totalSize, function (r) {
var resultArray = (this._progress === 0 ? new Uint8Array(totalSize) : new Uint8Array(this._result));
resultArray.set(new Uint8Array(r), this._progress);
this._result = resultArray.buffer;
}.bind(this));
};
и, поскольку при запуске прогресс всегда равен 0, он всегда резервирует весь размер файла.Я добавил правильную READ_CHUNKED (потому что у меня все еще есть другой существующий код, который также использует этот метод и ожидает, что он будет работать, как и раньше, я должен проверить, чтобы все остальное также продолжало работать) и изменил вышеупомянутое на это:
FileReader.prototype.readAsArrayBuffer = function(file) {
if (initRead(this, file)) {
return this._realReader.readAsArrayBuffer(file);
}
var totalSize = file.end - file.start;
readSuccessCallback.bind(this)('readAsArrayBuffer', null, file.start, totalSize, function(r) {
var resultArray;
if (!this.READ_CHUNKED) {
resultArray = new Uint8Array(totalSize);
resultArray.set(new Uint8Array(r), this._progress);
} else {
var newSize = FileReader.READ_CHUNK_SIZE;
if ((totalSize - this._progress) < FileReader.READ_CHUNK_SIZE) {
newSize = (totalSize - this._progress);
}
resultArray = new Uint8Array(newSize);
resultArray.set(new Uint8Array(r), 0);
}
this._result = resultArray.buffer;
}.bind(this));
};
Когда свойство READ_CHUNKED имеет значение true, оно возвращает только чанки и не резервирует память для всего файла, а когда оно ложно, оно работает так, как раньше.
Я никогдаиспользовал github (за исключением извлечения кода), поэтому я не загружаю это сейчас, я мог бы изучить его в ближайшем будущем.