File and Directory Entries API
Die File and Directory Entries API bietet eine Möglichkeit, Verzeichnisse und Dateilisten zu verarbeiten, die vom Benutzer über ein Formulareingabefeld oder per Drag-and-Drop bereitgestellt werden. Es ist eine fortgeschrittene Version der File API, die es Ihnen erlaubt, mit einer einzelnen Datei zu arbeiten. Ursprünglich war sie dafür vorgesehen, ein vollständiges virtuelles Dateisystem zu unterstützen, aber jetzt unterstützt sie nur noch Lesevorgänge auf vom Benutzer bereitgestellten Daten.
Siehe Beziehung zu anderen dateibezogenen APIs für einen Vergleich zwischen dieser API, der File System API und der File API.
Zugriff auf ein Dateisystem erhalten
Es gibt zwei Möglichkeiten, um auf Dateisysteme zuzugreifen, die im aktuellen Spezifikationsentwurf definiert sind:
- Beim Umgang mit einem
drop
Ereignis für Drag-and-Drop können SieDataTransferItem.webkitGetAsEntry()
aufrufen, um dasFileSystemEntry
für ein fallengelassenes Element zu erhalten. Wenn das Ergebnis nichtnull
ist, dann handelt es sich um eine fallengelassene Datei oder ein Verzeichnis, und Sie können Dateisystemaufrufe verwenden, um damit zu arbeiten. - Die
HTMLInputElement.webkitEntries
Eigenschaft ermöglicht Ihnen den Zugriff auf dieFileSystemFileEntry
Objekte für die aktuell ausgewählten Dateien, aber nur, wenn sie per Drag-and-Drop in den Dateiauswahldialog gezogen wurden (Firefox-Bug 1326031). WennHTMLInputElement.webkitdirectory
true
ist, ist das<input>
-Element stattdessen ein Verzeichnisauswahldialog, und Sie erhaltenFileSystemDirectoryEntry
Objekte für jedes ausgewählte Verzeichnis.
Geschichte
Die ursprüngliche File System API wurde entwickelt, um es Browsern zu ermöglichen, Unterstützung für den Zugriff auf ein sandboxed virtuelles Dateisystem auf dem Speichermedium des Benutzers zu implementieren. Die Arbeit zur Standardisierung der Spezifikation wurde 2012 aufgegeben, aber zu diesem Zeitpunkt hatte Google Chrome bereits seine eigene Implementierung der API. Im Laufe der Zeit nutzten zahlreiche beliebte Websites und Webanwendungen diese API, oft ohne alternative Lösungen oder auch nur die Verfügbarkeit der API zu überprüfen, bevor sie sie verwendeten. Mozilla entschied sich stattdessen dafür, andere APIs zu implementieren, die viele derselben Probleme lösen können, wie etwa IndexedDB; siehe den Blogbeitrag Warum keine FileSystem API in Firefox? für weitere Einblicke.
Infolgedessen funktionierten zahlreiche beliebte Websites in Browsern, die nicht Chrome waren, nicht richtig. Um dies zu beheben, wurden die Funktionen von Googles API, für die Konsens erzielt werden konnte, als File and Directory Entries API standardisiert und dann in anderen Browsern implementiert.
Schnittstellen
Die File and Directory Entries API umfasst die folgenden Schnittstellen:
FileSystem
-
Repräsentiert ein Dateisystem.
FileSystemEntry
-
Die grundlegende Schnittstelle, die einen einzelnen Eintrag in einem Dateisystem repräsentiert. Diese wird von anderen Schnittstellen implementiert, die Dateien oder Verzeichnisse darstellen.
FileSystemFileEntry
-
Repräsentiert eine einzelne Datei in einem Dateisystem.
FileSystemDirectoryEntry
-
Repräsentiert ein einzelnes Verzeichnis in einem Dateisystem.
FileSystemDirectoryReader
-
Erstellt durch den Aufruf von
FileSystemDirectoryEntry.createReader()
, bietet diese Schnittstelle die Funktionalität, die es erlaubt, den Inhalt eines Verzeichnisses zu lesen.
Erweiterungen zu anderen Schnittstellen
DataTransferItem.webkitGetAsEntry()
-
Gibt ein Objekt basierend auf
FileSystemEntry
zurück, das den Eintrag der ausgewählten Datei in ihrem Dateisystem repräsentiert. Dies wird im Allgemeinen entweder einFileSystemFileEntry
oderFileSystemDirectoryEntry
Objekt sein. File.webkitRelativePath
-
Gibt den Pfad zurück, relativ zu dem die URL der
File
ist. HTMLInputElement.webkitdirectory
-
Ein Boolescher Wert, der das
webkitdirectory
-Attribut repräsentiert. Wenntrue
, akzeptiert die Dateisystem-Auswahlschnittstelle nur Verzeichnisse anstelle von Dateien. HTMLInputElement.webkitEntries
-
Beschreibt die aktuell ausgewählten Dateien oder Verzeichnisse.
Spezifikationen
Specification |
---|
File and Directory Entries API # api-domfilesystem |