Добавить дополнительные файлы для загрузки через HTML Тип ввода = Файл с несколькими атрибутами - PullRequest
0 голосов
/ 18 января 2019

У меня есть HTML-форма, которую я пытаюсь получить для загрузки нескольких файлов, будь то с помощью стандартной кнопки «Выбрать файлы» <input type=file> с атрибутом multiple или с помощью перетаскивания нескольких файлов. Я хочу иметь возможность иметь массив файлов (объявляемых здесь в имени входных данных), которые можно добавлять в любое количество раз, когда кто-то выбирает или перетаскивает файлы. Но каждая новая попытка загрузить несколько файлов стирает предыдущее добавление файлов и возвращает массив в ноль.

HTML

<form id="uploadbanner" enctype="multipart/form-data" action="{{ url_for('set_records.add_files') }}" method="POST">
<h3>Choose file(s)</h3>
<div>
  <input id="files-upload" type="file" multiple name="files-upload[]">
</div>
<div id="drop-area">
  <div class="drop-instructions">or drag and drop files here</div>
</div>
<input type="submit" value="Upload Files" />
</form>

Javascript (только соответствующая часть)

var filesUpload = document.getElementById("files-upload"),
dropArea = document.getElementById("drop-area"),
fileList = document.getElementById('new-uploaded').getElementsByTagName('tbody')[0];

function traverseFiles (files) {
var formData = new FormData($("#uploadbanner")[0]);
    for (var i = 0, len = document.getElementById('files-upload').files.length; i < len; i++) {
        formData.append("files-upload"+(i+1), document.getElementById('files-upload').files[i]);
    }
    console.table( files ); //shows the array of files currently selected for upload
}

filesUpload.addEventListener("change", function () {
traverseFiles(this.files);
}, false);

dropArea.addEventListener("drop", function (evt) {
traverseFiles(evt.dataTransfer.files);
evt.preventDefault();
evt.stopPropagation();
}, false);

Как сохранить выбранные файлы для загрузки, независимо от того, сколько раз я пытаюсь выбрать / перетащить / удалить дополнительные файлы и просто добавить их в массив? Спасибо за вашу помощь здесь.

РЕДАКТИРОВАТЬ Добавление примера трех попыток добавления нескольких файлов и результатов таблицы консоли, демонстрирующих, что массив перезаписывается при каждой попытке:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...