Я использую 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) и перетаскивания.