Возможность запретить добавление файла в очередь (внутреннее отслеживание не синхронизировано, это ошибка / проблема?).
В моем случае мне нужно предотвратить добавление файла в зависимости от его расширения. Файлы, которые я загружаю, являются узкоспециализированными, большинство браузеров ничего о них не знают, поэтому тип контента обычно пустой. Я думал, что мог бы сделать что-то вроде этого:
if (output.type === 'addedToQueue' && typeof output.file !== 'undefined') {
//does some simple string check on file name for extension
this.validate(output.file.name);
//hasErrors is set in validate()
if (!this.hasErrors)
this.files.push(output.file);
}
Это влияет только на внешний массив, который я использую, а не на внутреннее состояние загруженного файла. Таким образом, пока файл не добавляется в массив, внутренний счетчик fileUploader был изменен, и я доказал это, пройдя по внутреннему коду загрузчика:
if (_this.isContentTypeAllowed(checkFile.type) && futureQueueLength <= _this.maxUploads) {
acc = acc.concat(checkFile);
}
else {
var /** @type {?} */ rejectedFile = _this.makeUploadFile(checkFile, i);
_this.serviceEvents.emit({ type: 'rejected', file: rejectedFile });
}
Переменная futureQueueLength все еще увеличивается на единицу выше, поэтому она отклоняет все последующие попытки добавить файл b / c внутри, думая, что я уже достиг максимально допустимого значения.
Как предотвратить добавление файла или сбросить внутреннее состояние загруженного файла?
ТИА
Брайан