Подтвердить что ты не робот

Dropzone загружает только один файл

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

вот мой html

<form class="dropzone dz-clickable" action="upload.php" enctype='multipart/form-data'>
  <i class="fa fa-cloud-upload element"></i>
  <div style="color:gray;">Drag and drop or click to upload image</div>
  <input type="hidden" name="filenameEmail" class="filenameEmail" value="">
  <input type="hidden" name="side" value="front">
</form>

i изменено dropzone.js

maxFiles: 1

он позволяет загружать только один файл, но я не могу удалить ранее загруженный файл .please помогите мне out.thanks заранее

4b9b3361

Ответ 1

maxFiles: 1 используется, чтобы сообщить dropzone, что должен быть только один файл. При наличии более одного файла будет вызываться функция maxfilesexceeded, причем файл с превышением в качестве первого параметр.

здесь простая функция для удаления предварительного просмотра первого файла и добавления нового:)

maxFiles:1,
init: function() {
      this.on("maxfilesexceeded", function(file) {
            this.removeAllFiles();
            this.addFile(file);
      });
}   

Ответ 2

Ограничение maxFiles до 1 все еще позволяет выбирать несколько файлов в диалоговом окне загрузки. Чтобы запретить выбор нескольких изображений в конфигурации, укажите следующую функцию init:

maxFiles:1,
init: function() {
    this.hiddenFileInput.removeAttribute('multiple');
}  

Ответ 3

Я использовал событие maxfilesexceeded с методом addFile и перешел в бесконечный цикл вызова события. Должна быть проблема использования addFile, потому что я не видел, чтобы это упоминалось как на официальном сайте, так и на вики GitHub. Наконец, я решил с событием addedfile. Dropzone.js является последней версией, когда я пишу (4.3.0).

init: function() {
  this.on('addedfile', function(file) {
    if (this.files.length > 1) {
      this.removeFile(this.files[0]);
    }
  });
}

Ответ 4

Ни одно из этих решений не работало для меня.

Событие maxfilesexceeded вызывается слишком поздно, то есть после попытки добавить файл.

Другие решения с использованием this.removeFile(this.files[0]); привели к "Uncaught TypeError: Cannot read property 'removeChild' of null". или бесконечному циклу.

Решено -

maxFiles: 2,
init: function () {

    this.on("addedfile", function (file) {
        if (this.files.length > 1) {
            this.files = this.files.slice(1, 2);                        
        }
    });

}

Работает при использовании dz-clickable (выбор файла btn) и перетаскивания.