Signatur
Beschreibung
Die Eigenschaft FileSystem.name gehört zur File and Directory Entries API. Sie liefert einen String, der das Dateisystem unter allen anderen vom Browser bereitgestellten Dateisystemen eindeutig kennzeichnet. Man kann sie nur lesen, Zuweisungen wirken sich nicht aus.
An ein FileSystem-Objekt kommt man in der Praxis fast immer über die Eigenschaft filesystem eines FileSystemEntry. Einen solchen Eintrag erhält man zum Beispiel beim Drag & Drop über DataTransferItem.webkitGetAsEntry() oder bei Datei-Eingabefeldern mit dem Attribut webkitdirectory über HTMLInputElement.webkitEntries.
Nützlich ist name vor allem zur Unterscheidung und Protokollierung. Damit lässt sich prüfen, ob zwei Einträge aus demselben Dateisystem stammen, etwa aus demselben Drop-Vorgang. Außerdem hilft der Name beim Debugging, wenn mehrere Dateisysteme im Spiel sind. Wie der String aufgebaut ist, bestimmt der Browser. Er hat keine festgelegte Semantik, man sollte ihn also nicht zerlegen und seinen Inhalt nicht auswerten.
Rückgabewert
USVString), der das Dateisystem eindeutig bezeichnet. Wie er aufgebaut ist, legt der Browser fest.Beispiele
Namen des Dateisystems bei Drag & Drop auslesen
const dropZone = document.querySelector('#drop-zone');
dropZone.addEventListener('dragover', (event) => event.preventDefault());
dropZone.addEventListener('drop', (event) => {
event.preventDefault();
for (const item of event.dataTransfer.items) {
const entry = item.webkitGetAsEntry();
if (!entry) continue;
// Jeder FileSystemEntry verweist auf sein FileSystem
console.log(`${entry.name} stammt aus Dateisystem: ${entry.filesystem.name}`);
}
});
Prüfen, ob Einträge aus demselben Dateisystem stammen
// <input type="file" id="ordner" webkitdirectory multiple>
const input = document.querySelector('#ordner');
input.addEventListener('change', () => {
const entries = input.webkitEntries ?? [];
const namen = new Set(entries.map((entry) => entry.filesystem.name));
console.log(`Anzahl Einträge: ${entries.length}`);
console.log(`Verschiedene Dateisysteme: ${namen.size}`);
});
Name und Wurzelverzeichnis zu Debug-Zwecken ausgeben
const describeFileSystem = (entry) => {
const { filesystem } = entry;
return {
name: filesystem.name,
root: filesystem.root.fullPath
};
};
document.addEventListener('drop', (event) => {
event.preventDefault();
const entry = event.dataTransfer.items[0]?.webkitGetAsEntry();
if (entry) console.table(describeFileSystem(entry));
});
document.addEventListener('dragover', (event) => event.preventDefault());
// Wichtig · Fallstricke
- Kein fester Aufbau: Wie der Name aussieht, bestimmt der Browser, und er kann sich zwischen Browsern und Versionen unterscheiden. Nur vergleichen, nicht zerlegen oder auswerten.
- Nicht dauerhaft: Ein Drop-Vorgang oder eine Dateiauswahl erzeugt oft ein eigenes, kurzlebiges Dateisystem. Der Name eignet sich deshalb nicht als dauerhafter Schlüssel, zum Beispiel im
localStorage. - Kompatibilität: Der Zugriff über
FileSystemEntry.filesystemfunktioniert in Chrome, Edge, Firefox und Safari. Die veraltete, nur in Chromium verfügbare Methodewindow.webkitRequestFileSystem()sollte man nicht mehr verwenden. - Für neue Projekte mit Lese- und Schreibzugriff eignen sich die File System API (
FileSystemHandle,showOpenFilePicker()) oder das Origin Private File System (navigator.storage.getDirectory()) besser. Beide haben mit dieser Schnittstelle nichts zu tun. - Die Eigenschaft ist schreibgeschützt. Eine Zuweisung wird ignoriert, im Strict Mode löst sie einen
TypeErroraus.