如何在 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 物件中。