Как заменить ранее выбранный файл? - PullRequest
1 голос
/ 24 января 2020

Я использую Dropzone с Angular через ngx-dropzone-wrapper.

Я не использую загрузку напрямую из Dropzone, я просто позволяю ей собирать файлы и затем обрабатывать их в своем коде .

Мне нужно ограничить количество файлов до 1. Поэтому я установил config.maxFiles = 1. Действительно, теперь диалог открытия файла позволяет выбрать только один файл. Но проблема в том, что Dropzone не заменяет предыдущий файл! Вместо этого он добавляет новый файл в свою коллекцию файлов с флагом accept = false (скорее всего, потому что был достигнут maxFiles). Это не то, что я ожидал. Мне нужно config.maxFiles = 1, чтобы удалить старый файл, добавить новый и принять его.

Итак, я должен позвонить removeAllFiles(true), чтобы поддержать мои требования. Но я не могу найти обработчики событий, которые запускаются сразу после того, как пользователь выбрал файл и до того, как Dropzone попытается его обработать.

Итак, как мне реализовать следующее требование:

  • пользователь может выбрать только один файл за раз
  • , если пользователь допустил ошибку и хочет выбрать другой файл, новый файл должен заменить ранее выбранный

?

1 Ответ

1 голос
/ 24 января 2020

вам нужно указать дропзоне, чтобы он отбрасывал первое изображение. Вам нужна функция maxfilesexceeded в опциях Dropzone.

 maxfilesexceeded: function (files) {
        this.removeAllFiles();
        this.addFile(files);
 },

она работает внутри, если ваши maxfiles равны единице, и вы добавляете второй, первый будет отброшен, потому что он превысил свой предел

...