HTMLInputElement: webkitdirectory 屬性

HTMLInputElement 介面的 webkitdirectory 屬性反映了 webkitdirectory HTML 屬性,該屬性指示 <input type="file"> 元素只能選擇目錄而不是檔案。

選擇目錄時,該目錄及其所有內容的層級結構都會包含在選定的專案集中。可以透過 webkitEntries 屬性獲取選定的檔案系統條目。

注意:該屬性在規範中命名為 webkitdirectory,這是因為它最初是 Google Chrome 特有的 API。

一個布林值;如果 <input> 元素應該只允許選擇目錄,則為 true;如果只應選擇檔案,則為 false

描述

webkitdirectory 設定為 true 會導致輸入元素向用戶提供目錄供選擇,而不是檔案。使用者選擇目錄後,返回的 files 中的每個 File 物件的 File.webkitRelativePath 屬性都會設定為相對於所選祖先目錄的路徑。例如,考慮以下檔案系統:

PhotoAlbums
├── Birthdays
│   ├── Jamie's 1st birthday
│   │   ├── PIC1000.jpg
│   │   └── PIC1044.jpg
│   └── Don's 40th birthday
│       ├── PIC2343.jpg
│       └── PIC2356.jpg
└── Vacations
    └── Mars
        ├── PIC5556.jpg
        ├── PIC5684.jpg
        └── PIC5712.jpg

如果使用者選擇 PhotoAlbums 目錄,則檔案列表將包含每個檔案的 File 物件。PIC2343.jpg 的條目將具有 webkitRelativePath PhotoAlbums/Birthdays/Don's 40th birthday/PIC2343.jpg。這使得即使 FileList 是扁平的,也可以確定選定目錄的層級結構。

注意:webkitRelativePathChromium < 72 中的行為有所不同。有關詳細資訊,請參閱 此 bug

示例

在此示例中,將顯示一個目錄選擇器,允許使用者選擇一個或多個目錄。當發生 change 事件時,將建立並顯示所選目錄層級結構中所有檔案的列表。

HTML

html
<input type="file" id="file-picker" name="fileList" webkitdirectory multiple />
<ul id="listing"></ul>

JavaScript

js
document.getElementById("file-picker").addEventListener("change", (event) => {
  let output = document.getElementById("listing");
  for (const file of event.target.files) {
    let item = document.createElement("li");
    item.textContent = file.webkitRelativePath;
    output.appendChild(item);
  }
});

結果

規範

規範
File and Directory Entries API
# dom-htmlinputelement-webkitdirectory

瀏覽器相容性

另見