可以将元素的.files属性设置<input type="file">为FileList来自例如不同的<input type="file">元素.files属性或DataTransfer.files属性。请参阅Make .files settable #2866,将文件上传到 HTML 表单和提交之间会发生什么?.
FileListobject 有一个Symbol.iterator属性,我们可以用它来设置一个File可迭代的对象,但是.files .length仍然设置为0并传递一个<form>具有<input type="file">集,其中.files使用上述方法设置的File对象会产生一个.size设置为的对象0。
如何将FileatFileList和 set .lengthof设置为设置的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