¿Cómo establecer los objetos File y la propiedad de longitud en el objeto FileList donde los archivos también se reflejan en el objeto FormData?
Es posible configurar.files
propiedad de<input type="file">
elemento a unFileList
por ejemplo de un diferente<input type="file">
elemento.files
propiedad oDataTransfer.files
propiedad. VerHacer archivos configurables # 2866, ¿Qué sucede entre subir un archivo a un formulario HTML y enviarlo?.
FileList
el objeto tiene unSymbol.iterator
propiedad que podemos usar para establecer unFile
objeto que es iterable, sin embargo el.files
.length
todavía está configurado en0
y pasando un<form>
teniendo<input type="file">
establecer donde el.files
se establece utilizando el enfoque anterior produce unFile
objeto que tiene.size
ajustado a0
.
Cómo configurar elFile
aFileList
y establecer.length
deFileList
al número de archivos establecidos, donde los archivos se establecen enFormData()
¿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