HTMLInputElement: webkitdirectory property - Web APIs | MDN

Value

A Boolean; true if the <input> element should allow picking only directories or false if only files should be selectable.

Description

Setting webkitdirectory to true causes the input element to offer directories for the user to select instead of files. After the user chooses a directory, each File object in the returned files has its File.webkitRelativePath property set to a path relative to the selected ancestor directory. For example, consider this file system:

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

If the user chooses the PhotoAlbums directory, the list reported by files will contain File objects for every file. The entry for PIC2343.jpg will have a webkitRelativePath of PhotoAlbums/Birthdays/Don's 40th birthday/PIC2343.jpg. This makes it possible to determine the selected directory's hierarchy even though the FileList is flat.

Note: The behavior of webkitRelativePath is different in Chromium < 72. See this bug for further details.

Examples

In this example, a directory picker is presented which lets the user choose one or more directories. When the change event occurs, a list of all files contained within the selected directory hierarchies is created and displayed.

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

Result

Specifications

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

Browser compatibility

See also

Help improve MDN

Learn how to contribute

This page was last modified on by MDN contributors.