--- title: HTMLInputElement.webkitDirectory slug: Web/API/HTMLInputElement/webkitDirectory tags: - API - File System API - File and Directory Entries API - Files - HTML DOM - HTMLInputElement - Non-standard - Property - Reference - Web - webkitdirectory - プロパティ translation_of: Web/API/HTMLInputElement/webkitdirectory ---

{{APIRef("HTML DOM")}}{{non-standard_header}}

HTMLInputElement.webkitDirectory プロパティで、 {{htmlattrxref("webkitdirectory", "input")}} という HTML 属性の値を反映し、 {{HTMLElement("input")}} 要素によってユーザーがファイルの代わりにディレクトリを選択できることを示します。ディレクトリが選択された場合、ディレクトリとその内容の階層構造が選択されたアイテムのセットに含まれます。選択されているファイルシステムのファイルアイテムは、 {{domxref("HTMLInputElement.webkitEntries", "webkitEntries")}} を使用して受け取ることができます。

構文

 HTMLInputElement.webkitdirectory = boolValue

論理型で、 true は {{HTMLElement("input")}} 要素がディレクトリの身を選択することができることを、 false はファイルのみが選択できることを示します。

結果を理解する

ユーザーが選択を行った後、 files の中のそれぞれの {{domxref("File")}} オブジェクトは各自が {{domxref("File.webkitRelativePath")}} プロパティセットを持ち、ファイルが所在する位置が選択されたディレクトリの中の相対パスで設定されます。例えば、次のようなファイルシステムを考えてみてください。

ユーザーが PhotoAlbums を選択すると、 files によって報告されるリストは上記のすべてのファイルに対する {{domxref("File")}} オブジェクトを含みます。 — しかし、ディレクトリは含みません。 PIC2343.jpg のエントリでは webkitRelativePathPhotoAlbums/Birthdays/Don's 40th birthday/PIC2343.jpg となりますこれによって {{domxref("FileList")}} がフラットでも階層構造を知ることができます。

メモ: webkitRelativePath の挙動は Chromium < 72 では異なります。詳しくはこのバグを参照してください。

この例では、ユーザーが1つまたは複数のディレクトリを選択することができるディレクトリピッカーが表示されます。 {{event("change")}} イベントが発生すると、選択されたディレクトリ階層ないのすべてのファイルを含むリストが生成され、表示されます。

HTML content

<input type="file" id="filepicker" name="fileList" webkitdirectory multiple />
<ul id="listing"></ul>

JavaScript content

document.getElementById("filepicker").addEventListener("change", function(event) {
  let output = document.getElementById("listing");
  let files = event.target.files;

  for (let i=0; i<files.length; i++) {
    let item = document.createElement("li");
    item.innerHTML = files[i].webkitRelativePath;
    output.appendChild(item);
  };
}, false);

結果

{{ EmbedLiveSample('Example') }}

仕様書

仕様書 状態 備考
{{ SpecName('File System API', '#dom-htmlinputelement-webkitdirectory', 'webkitdirectory') }} {{ Spec2('File System API') }} 初回定義

This API has no official W3C or WHATWG specification.

ブラウザーの互換性

{{Compat("api.HTMLInputElement.webkitdirectory")}}

関連情報