File and Directory Entries API
Die Datei- und Verzeichniseinträge-API bietet eine Möglichkeit, Verzeichnisse und Dateilisten zu verarbeiten, die vom Benutzer über eine Formular-Eingabe oder eine Drag-and-Drop-Operation bereitgestellt werden. Sie ist eine fortgeschrittenere Version der Datei-API, die es Ihnen ermöglicht, mit einer einzelnen Datei zu arbeiten. Ursprünglich sollte sie ein vollständiges virtuelles Dateisystem unterstützen, unterstützt jetzt jedoch nur Leseoperationen auf benutzerbereitgestellten Daten.
Siehe Beziehung zu anderen dateibezogenen APIs für einen Vergleich zwischen dieser API, der Dateisystem-API und der Datei-API.
Zugriff auf ein Dateisystem erhalten
Es gibt zwei Möglichkeiten, 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 abgelegtes Element zu erhalten. Wenn das Ergebnis nichtnull
ist, handelt es sich um eine abgelegte Datei oder ein Verzeichnis, und Sie können Dateisystemaufrufe verwenden, um damit zu arbeiten. - Die
HTMLInputElement.webkitEntries
-Eigenschaft ermöglicht den Zugriff auf dieFileSystemFileEntry
-Objekte für die aktuell ausgewählten Dateien, allerdings nur, wenn sie in den Datei-Auswahlbereich gezogen und abgelegt wurden (Firefox-Bug 1326031). WennHTMLInputElement.webkitdirectory
true
ist, ist das<input>
-Element stattdessen ein Verzeichnisauswahl-Element, und Sie erhaltenFileSystemDirectoryEntry
-Objekte für jedes ausgewählte Verzeichnis.
Verlauf
Die ursprüngliche Dateisystem-API wurde erstellt, um Browsern die Unterstützung für den Zugriff auf ein sandboxed virtuelles Dateisystem auf dem Speichergerät des Benutzers zu ermöglichen. Die Arbeit zur Standardisierung der Spezifikation wurde 2012 aufgegeben, aber zu diesem Zeitpunkt hatte Google Chrome seine eigene Implementierung der API eingeführt. Im Laufe der Zeit begannen viele beliebte Websites und Webanwendungen, sie zu nutzen, oft ohne eine Möglichkeit anzubieten, auf Standard-APIs auszuweichen oder sogar zu prüfen, ob die API verfügbar ist, bevor sie verwendet wird. Mozilla entschied sich stattdessen, andere APIs zu implementieren, die viele der gleichen Probleme lösen können, wie IndexedDB; siehe den Blogbeitrag Warum keine Datei-System-API in Firefox? für weitere Einblicke.
Als Ergebnis funktionierten eine Reihe von beliebten Websites in anderen Browsern als Chrome nicht richtig. Um das zu beheben, wurden die Funktionen von Googles API, für die ein Konsens erreicht werden konnte, als Datei- und Verzeichniseinträge-API standardisiert, und diese wurde dann in anderen Browsern umgesetzt.
Schnittstellen
Die Datei- und Verzeichniseinträge-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 Aufruf von
FileSystemDirectoryEntry.createReader()
, bietet diese Schnittstelle die Funktionalität, die es Ihnen ermöglicht, 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 in der Regel entweder einFileSystemFileEntry
oder einFileSystemDirectoryEntry
-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 darstellt. Wenntrue
, akzeptiert die Dateisystemauswahl-Schnittstelle nur Verzeichnisse anstatt Dateien. HTMLInputElement.webkitEntries
-
Beschreibt die derzeit ausgewählten Dateien oder Verzeichnisse.
Spezifikationen
Specification |
---|
File and Directory Entries API # api-domfilesystem |
Browser-Kompatibilität
Report problems with this compatibility data on GitHubLegend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support
- See implementation notes.