Лол, разве нет способа добавить больше бонусов? : D

установить.files собственностью<input type="file"> элемент кFileList например, из другого<input type="file"> элемент.files собственность илиDataTransfer.files свойство. ВидетьСделать .files настраиваемым # 2866, Что происходит между загрузкой файла в форму HTML и его отправкой?.

FileList объект имеетSymbol.iterator свойство, которое мы можем использовать, чтобы установитьFile объект, который является итеративным, однако.files .length все еще настроен на0 и прохождение<form> имеющий<input type="file"> установить где.files устанавливается с использованием вышеуказанного подхода даетFile объект, имеющий.size установлен в0.

Как установитьFile вFileList и установить.length изFileList на количество файлов, где файлы установлены вFormData() объект?

const input = document.createElement("input");

const form = document.createElement("form");

const [...data] = [
  new File(["a"], "a.txt")
, new File(["b"], "b.txt")
];

input.type = "file";

input.name = "files";

input.multiple = true;
// set `File` objects at `FileList`
input.files[Symbol.iterator] = function*() {
   for (const file of data) {
     yield file
   };
};

form.appendChild(input);

const fd = new FormData(form);

for (const file of input.files) {
  console.log(file); // `File` objects set at `data`
}

for (const [key, prop] of fd) {
  // `"files"`, single `File` object having `lastModified` property
  // set to a time greater than last `File` object within `data`
  // at Chromium 61, only `"files"` at Firefox 57
  console.log(key, prop); 
}

console.log(input.files.length); // 0

Ответы на вопрос(1)

Ваш ответ на вопрос