HTMLInputElement: thuộc tính webkitdirectory

Baseline 2025
Newly available

Since August 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

Thuộc tính webkitdirectory của giao diện HTMLInputElement phản ánh thuộc tính HTML webkitdirectory, cho biết các phần tử <input type="file"> chỉ có thể chọn thư mục thay vì tệp.

Khi một thư mục được chọn, toàn bộ cấu trúc phân cấp của thư mục và nội dung của nó được bao gồm trong tập hợp các mục đã chọn. Các mục nhập hệ thống tệp đã chọn có thể được lấy bằng thuộc tính webkitEntries.

Note: Thuộc tính này được gọi là webkitdirectory trong đặc tả do nguồn gốc là API dành riêng cho Google Chrome.

Giá trị

Một Boolean; true nếu phần tử <input> chỉ cho phép chọn thư mục hoặc false nếu chỉ có thể chọn tệp.

Mô tả

Đặt webkitdirectory thành true khiến phần tử đầu vào cung cấp các thư mục cho người dùng chọn thay vì tệp. Sau khi người dùng chọn một thư mục, mỗi đối tượng File trong files trả về có thuộc tính File.webkitRelativePath được đặt thành đường dẫn tương đối so với thư mục tổ tiên đã chọn. Ví dụ, xem xét hệ thống tệp này:

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

Nếu người dùng chọn thư mục PhotoAlbums, danh sách được báo cáo bởi files sẽ chứa các đối tượng File cho mọi tệp. Mục nhập cho PIC2343.jpg sẽ có webkitRelativePathPhotoAlbums/Birthdays/Don's 40th birthday/PIC2343.jpg. Điều này làm cho việc xác định cấu trúc phân cấp của thư mục đã chọn khả thi mặc dù FileList là phẳng.

Note: Hành vi của webkitRelativePath khác trong Chromium < 72. Xem lỗi này để biết thêm chi tiết.

Ví dụ

Trong ví dụ này, một bộ chọn thư mục được trình bày cho phép người dùng chọn một hoặc nhiều thư mục. Khi sự kiện change xảy ra, danh sách tất cả các tệp chứa trong các cấu trúc phân cấp thư mục đã chọn được tạo và hiển thị.

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);
  }
});

Kết quả

Đặc tả kỹ thuật

Specification
File and Directory Entries API
# dom-htmlinputelement-webkitdirectory

Tương thích trình duyệt

Xem thêm