Como definir os objetos Arquivo e a propriedade length no objeto FileList, onde os arquivos também são refletidos no objeto FormData?

É possível definir.files propriedade de<input type="file"> elemento para umFileList de por exemplo um diferente<input type="file"> elemento.files propriedade ouDataTransfer.files propriedade. VejoTornar .files configuráveis # 2866, O que acontece entre o upload de um arquivo para um formulário HTML e o envio?.

FileList objeto tem umSymbol.iterator propriedade que podemos usar para definir umFile objeto iterável, no entanto, o.files .length ainda está definido como0 e passando um<form> tendo<input type="file"> defina onde.files é definido usando a abordagem acima produz umFile objeto tendo.size definido como0.

Como definir oFile àsFileList E definir.length doFileList para o número de arquivos definido, onde os arquivos são definidos emFormData() objeto?

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

questionAnswers(1)

yourAnswerToTheQuestion