このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

ファイルとディレクトリー項目 API

ファイルとディレクトリー項目 API は、ユーザーがフォーム入力またはドラッグ&ドロップ操作で指定したディレクトリーやファイルリストを処理する手段を提供します。これは単一のファイルを扱うファイル API のより高度なバージョンです。当初は完全な仮想ファイルシステムへの対応を目的としていましたが、これでユーザー提供データに対する読み取り操作のみに対応しています。

ファイル関連のその他の API との関係では、この API と、ファイルシステム APIファイル APIとの比較を行っています。

ファイルシステムへのアクセス権の取得

仕様の現在の草案で定義されているファイルシステムへのアクセスを取得する方法は 2 つあります。

  • ドラッグ&ドロップで drop イベントを扱う際、 DataTransferItem.webkitGetAsEntry() を呼び出すとドロップされたアイテムの FileSystemEntry を取得することができます。結果が null でなかった場合、これはドロップされたファイルまたはディレクトリーであり、ファイルシステム呼び出しを使用して取り扱うことができます。
  • HTMLInputElement.webkitEntries プロパティでは、現在選択されているファイルの FileSystemFileEntry オブジェクトにアクセスすることができますが、これはファイル選択へドラッグ&ドロップされた場合に限られます(Firefox バグ 1326031)。 HTMLInputElement.webkitdirectorytrue である場合、 <input> 要素はディレクトリーピッカーとなり、それぞれの選択されたディレクトリーの FileSystemDirectoryEntry オブジェクトを取得できます。

歴史

元々のファイルシステム API は、ブラウザーがユーザーのストレージ機器上のサンドボックス化された仮想ファイルシステムにアクセスできるようにするために作成されました。仕様の標準化作業は 2012 年に放棄されましたが、その時点で Google Chrome は独自の実装を既に搭載していました。時間とともに、多くの人気サイトやウェブアプリケーションがこれを使用するようになりました。多くの場合、標準 API へのフォールバック手段を指定せず、API が利用可能かどうかを調べることすらせず、そのまま使用していたのです。Mozilla は代わりに、IndexedDB など、同様の問題の多くを解決できる他の API の実装を選択しました。詳細な分析はブログ記事 Why no FileSystem API in Firefox? をご覧ください。

その結果、多くの人気ウェブサイトが Chrome 以外のブラウザーでは正常に動作しなくなりました。この問題を解決するため、Google の API のうち合意が得られた機能が「ファイルとディレクトリー項目 API」として標準化され、その後他のブラウザーにも実装されました。

インターフェイス

ファイルとディレクトリー項目 API には以下のインターフェイスがあります。

FileSystem

ファイルシステムを表します。

FileSystemEntry

ファイルシステムにおける単一の項目を表現する基本インターフェイス。ファイルやディレクトリーを表現する他のインターフェイスによって実装される。

FileSystemFileEntry

ファイルシステム内の単一のファイルを表します。

FileSystemDirectoryEntry

ファイルシステム内の単一のディレクトリーを表します。

FileSystemDirectoryReader

FileSystemDirectoryEntry.createReader() を呼び出すことで生成され、このインターフェイスはディレクトリーの内容を読み取る機能を提供します。

他のインターフェイスへの拡張

DataTransferItem.webkitGetAsEntry()

選択されたファイルのファイルシステム上の項目を表す FileSystemEntry の派生オブジェクトを返します。これは通常 FileSystemFileEntry または FileSystemDirectoryEntry オブジェクトのどちらかになります。

File.webkitRelativePath

File の URL に対する相対パスを返します。

HTMLInputElement.webkitdirectory

webkitdirectory 属性を表す論理値です。true の場合、ファイルシステムピッカーインターフェイスはファイルではなくディレクトリーのみを受け入れます。

HTMLInputElement.webkitEntries

現在選択されているファイルまたはディレクトリーを指定します。

仕様書

Specification
File and Directory Entries API
# api-domfilesystem

ブラウザーの互換性

関連情報