是否可以组合两个 FileList 对象?

Posted

技术标签:

【中文标题】是否可以组合两个 FileList 对象?【英文标题】:Is it possible to combine two FileList objects? 【发布时间】:2015-07-18 15:11:23 【问题描述】:

我有一个 FileList 对象,其中包含以前上传的文档。我正在尝试使用另一个函数通过使用另一个 FileList 对象将更多文件添加到此集合中,因此我需要将辅助 FileList 对象“附加”到主要对象上。怎么可能做到这一点?

【问题讨论】:

我认为这个问题也可以回答添加或推送新文件到 FileList 对象的问题,所以我将对其进行编辑以同时回答该问题 【参考方案1】:

您必须先将FileList 对象转换为数组,然后您可以简单地concat 多个数组。

const joined = Array.from(fileListA).concat(Array.from(fileListB));

【讨论】:

【参考方案2】:
const filesArray = [...filesList1, ...filesList2];
console.log(filesArray) // [File, File, File, File, File, ...]

【讨论】:

【参考方案3】:

所选答案完全阐明了路径。这里也可以使用临时变量,如下所示:

 var temp = files
 files=Array.prototype.slice.call(temp).concat(Array.prototype.slice.call(event.target.files))

同样在 React 中用于设置文件的状态,可以在 handleInputChange 函数中使用以下代码:

 var temp = this.state.files;         
 this.setState(
        files: Array.prototype.slice.call(temp).concat(Array.prototype.slice.call(event.target.files))
   )

【讨论】:

【参考方案4】:
var fileLists = [fileListA, fileListB];
var files = fileLists.reduce(function(a, c) 
    return Array.prototype.concat.call(Object.values(a), Object.values(c))
)

【讨论】:

以上是关于是否可以组合两个 FileList 对象?的主要内容,如果未能解决你的问题,请参考以下文章

file控件,以及fileList对象。

如何在 JavaScript 中将 File 对象添加到 FileList 集合中?

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

Powershell 脚本判断制定路径下文件是否存在(来源于网络-转载)

将 FileList 拆分为单独的文件输入元素

File Reader文件操作