【发布时间】:2018-08-29 13:39:22
【问题描述】:
我有:
<input type="file" id="f" name="f" onchange="c()" multiple />
每次用户选择一个文件时,我都会通过将f.files 的每个元素推送到一个数组来构建所有选定文件的列表:
var Files = [];
function c() {
for (var i=0;i<this.files.length;i++) {
Files.push(this.files[i]);
};
}
在表单提交时,f.files 仅包含上次选择操作中的项目,因此我需要使用我积累的 FileList 项目列表更新 f.files:
const upload=document.getElementById("f");
upload.files = files;
但第二行给出:
未捕获的类型错误:无法在“HTMLInputElement”上设置“文件”属性:提供的值不是“文件列表”类型。
我为它分配一个数组并不高兴。如何从我之前收集的FileList 元素列表中构造一个FileList 对象?
附带问题:我认为 Javascript 使用动态类型。为什么这里会报错类型?
【问题讨论】:
-
我找不到参考,但我强烈怀疑
File对象必须是与<input>元素或拖放目标关联的活动FileList的一部分. -
这里有人回答了类似的问题:stackoverflow.com/questions/38449440/…
标签: javascript