У меня небольшая проблема с ng2-file-upload Я пытаюсь запретить пользователю загружать / использовать один и тот же файл дважды. То есть, добавив тот же файл в очередь, но пока не загружая его.)
this.uploader = new FileUploader({
url: this.baseUrl + 'claim/document/' + this.claim.id,
authToken: 'Bearer ' + localStorage.getItem('token'),
// allowedMimeType: ['image/png', 'image/jpg', 'image/jpeg', 'image/gif'],
maxFileSize: 15 * 1024 * 1024, // 15 MB
// headers: [{name:'Accept', value:'application/json'}],
isHTML5: true,
autoUpload: false,
});
this.uploader.onAfterAddingFile = fileItem => {
fileItem.withCredentials = false;
let docExists = false;
for (const doc of this.claim.data.generalDocumentDto) {
if (fileItem.file.name === doc.fileName) {
docExists = true;
this.alertService.warning('Document table already contains a file with name ' + fileItem.file.name);
// this.uploader.clearQueue();
this.uploader.removeFromQueue(fileItem);
break;
}
}
if (!docExists) {
// do some other stuff
}
};
<input type="file" #fileInput ng2FileSelect [uploader]="uploader" hidden/>
<button type="button" class="btn btn-primary" (click)="fileInput.click()">Upload File</button>
и затем я могу удалить его из очереди следующим образом, что, кажется, работает (я не вижу его в очереди) после 'removeFromQueue () 'называется
for (const fileItem of this.uploader.queue) {
if (this.claimDocumentFileName === fileItem.file.name) {
this.uploader.removeFromQueue(fileItem);
break;
}
}
Но если я попытаюсь добавить его снова, откроется окно загрузки файлов, я выберу тот же файл, дважды щелкните по нему, и тогда ничего не произойдет!
Он не вызывает 'onAfterAddingFile ()', и если я смотрю в очереди, его там нет.
ВОПРОС - есть ли что-то еще, что мне нужно сделать, чтобы сообщить загрузчику разрешить повторную загрузку этого файла?
Я понимаю, что природа по умолчанию позволит мне добавлять один и тот же файл несколько раз, что я предотвращаю с помощью проверки 'onAfterAddingFile ()'
ODD BEHAVIOR - Если я добавлю первый файл ex. file1.txt, затем второй файл file2.txt, затем удалите file1.txt, а затем повторно, это разрешено и работает. Кажется, что это разрешено, если очередь не пуста. Но если очередь пуста, я не могу повторно добавить последний файл, который я пытался добавить!
CONCERN - я знаю, что могу сбросить очередь с помощью 'clearQueue ()', но если я есть другие предметы, все они будут удалены, поэтому я не хочу этого.