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> 

я изменил dropzone.js

 maxFiles: 1 

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

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

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

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

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

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

Я использовал событие maxfilesexceeded с методом addFile и 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]); } }); } 

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

Событие 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 (файл chooser btn) и перетаскивания.