如何在 FileList 对象中设置 File 对象和 length 属性,其中文件也反映在 FormData 对象中? 如提示中所述,可以设置 的 .files 属性从另一个 到 FileList 的元素元素的 .files 属性或 DataTransfer.files 属性。 但是,FileList 对象有一个 .length 属性,即使通过 .files 属性设置后,该属性仍保持为 0。另外,传递一个包含 使用此方法修改 .files 将导致 .size 为 0 的 File 对象。 要解决此问题,有必要首先确保 FileList 是可变的。这可以通过利用 DataTransfer 构造函数创建一个可通过 DataTransferItemList 访问的可变 FileList 来实现。 一旦 FileList 可变,就可以使用 DataTransferItemList.add() 方法单独设置文件。这还将确保 FileList.length 属性设置为正确的文件数量。 通过执行此过程,文件也将反映在从表单创建的 FormData 对象中。 这是一个示例: const dT = new DataTransfer(); dT.items.add(new File(['foo'], 'programmatically_created.txt')); document.querySelector('input[type="file"]').files = dT.files;登录后复制 通过这种方法, 的 FileList元素将使用在 DataTransfer 对象中创建的文件进行填充。 FileList.length 属性将设置为 1,文件将反映在从表单构造的 FormData 对象中。