相关疑难解决方法(0)

如何在FileList对象中设置File对象和length属性,其中文件也反映在FormData对象中?

可以将元素的.files属性设置为例如来自不同的元素属性或属性.请参阅Make .files settable#2866,将文件上传到HTML表单并提交之间会发生什么?.<input type="file">FileList<input type="file">.filesDataTransfer.files

FileList对象有一个Symbol.iterator属性,我们可以使用它来设置一个File可迭代的对象,但是.files .length仍然设置为0并传递一个<form><input type="file">用于.files使用上述方法设置的集合,产生一个设置为的File对象..size0

如何设置Fileat FileList和set设置.lengthFileList文件数,文件在FormData()object 设置的位置?

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;
// …
Run Code Online (Sandbox Code Playgroud)

javascript form-data filelist fileapi

29
推荐指数
1
解决办法
9729
查看次数

是否可以更新FileList?

我有:

<input type="file" id="f" name="f" onchange="c()" multiple />
Run Code Online (Sandbox Code Playgroud)

每次用户选择文件时,我都会通过将每个元素压f.files入数组来构建所有选定文件的列表:

var Files = [];
function c() {
  for (var i=0;i<this.files.length;i++) {
    Files.push(this.files[i]);
  };
}
Run Code Online (Sandbox Code Playgroud)

在提交表单时,f.files仅包含上次选择操作中的项目,因此我将需要更新自己累积f.filesFileList项目列表:

const upload=document.getElementById("f");
upload.files = files;
Run Code Online (Sandbox Code Playgroud)

但是第二行给出:

未捕获到的TypeError:无法在'HTMLInputElement'上设置'files'属性:提供的值不是'FileList'类型的。

我为它分配一个数组并不高兴。如何FileListFileList先前收集的元素列表中构造一个对象?

附带问题:我认为Javascript使用动态类型。为什么在这里抱怨类型错误?

javascript

7
推荐指数
2
解决办法
3570
查看次数

标签 统计

javascript ×2

fileapi ×1

filelist ×1

form-data ×1