<input type="file">
要素の.files
プロパティをに設定することは、例えば異なる<input type="file">
要素.files
プロパティまたはDataTransfer.files
プロパティから設定できます。 Make .files settable #2866,What happens between uploading a file to an HTML form and submitting it?を参照してください。FileListオブジェクトにFileオブジェクトとlengthプロパティを設定するには、ファイルもFormDataオブジェクトに反映されますか?
FileList
オブジェクトは、我々は反復可能であるFile
オブジェクトしかし.files
.length
が依然として0
に設定さを設定するために使用できるSymbol.iterator
性を有し、通過<form>
は.files
が得られる上記のアプローチを用いて設定されている<input type="file">
セットを有しますFile
.size
のオブジェクトは0
に設定されています。 FileList
でFile
を設定すると、ファイルがFormData()
オブジェクトに設定されている設定ファイルの数にFileList
の.length
を設定する方法
?
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
はそれだけで、前を編集するほうがよいのではないでしょうhttps://developer.mozilla.org/en-US/Firefox/Releases/57#DOM –