DynamoDB - Предоставленный ключевой элемент не соответствует схеме

Объект FileList из HTMLInputElement (который является основным объектом, который будет хранить файлы в вашем input.files ), может быть изменен только для полного его удаления (с помощью input.value = null).

Теперь есть способы , чтобы фактически обойти это, введенные конструктором DataTransfer , но на сегодняшний день только Chrome и последний Firefox поддерживают этот конструктор .

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

Вот один беспорядочный способ, но он может дать вам хорошую отправную точку: он добавляет массив на ваш вход, который будет хранить в памяти файлы.

// The multiUp function will be called each time our hidden input is changed
document.querySelector('input').addEventListener('change', multiUp, false);

function multiUp(e){
  // if it's the first time we call it
  if(!this.multiFiles){
    // create the array that will keep our files in memory
    this.multiFiles = [];
    // add a pointer to the span where we'll display the file names
    this.__fileHolder = document.querySelector('#fileHolder');
    }
  // each time : empty the fileHolder span
  this.__fileHolder.innerHTML = '';
  var i;
  // add the new files to our array
  for(i = 0; i0){
      for(var i = 0; i
#add{ font-size: 2em; cursor: pointer;}
#fileHolder{ color: rgba(0,0,0,.7); max-width: 80%; font-size: 70%; overflow-x: auto; white-space: nowrap; display: inline-block;}
.deleteBtn{cursor: pointer; color: #000;}
+ No files selected.

Теперь вы можете получить доступ к этим файлам, итерации через document.querySelector('.multiUp>input').multiFiles.

0
задан Evan 13 July 2018 в 20:38
поделиться