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

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

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

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

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