API-Verbesserungen für die Arbeit mit Dateien im Browser

Unterstützung für mehrere Leser und Autoren für FileSystemSyncAccessHandle und exklusiven Autor für FileSystemWritableFileStream.

Mehrere Leser und Schreiber für FileSystemSyncAccessHandle

Mit dem privaten Ursprungsdateisystem (manchmal auch als Bucket-Dateisystem bezeichnet) können Entwickler auf Dateien zugreifen, die für maximale Lese- und Schreibleistung optimiert sind. Dies geschieht über FileSystemSyncAccessHandle-Objekte. Derzeit schlägt der Versuch fehl, mehrere FileSystemSyncAccessHandle-Objekte für denselben Dateieintrag zu öffnen. Es wird eine NoModificationAllowedError ausgegeben. Da diese Einschränkung in einigen Anwendungsfällen einschränkend ist, wird in Chrome 121 ein neuer mode-Parameter für die FileSystemFileHandle.createSyncAccessHandle()-Methode mit den folgenden zulässigen Stringwerten eingeführt:

  • "readwrite": Das ist der aktuelle Standard. Nach dem Öffnen sind alle Methoden auf FileSystemSyncAccessHandle zulässig. Es ist nur eine Instanz von FileSystemSyncAccessHandle zulässig.
  • "read-only" : Ermöglicht mehrere Leser. Nach dem Öffnen sind nur leseähnliche Methoden auf FileSystemSyncAccessHandle zulässig: read(), getSize() und close(). Es können mehrere Instanzen von FileSystemSyncAccessHandle erstellt werden, solange sich alle im Lesemodus befinden.
  • "readwrite-unsafe": Ermöglicht mehrere Schreibvorgänge. Nach dem Öffnen sind alle Methoden auf FileSystemSyncAccessHandle zulässig. Es können mehrere Instanzen von FileSystemSyncAccessHandle erstellt werden, solange sich alle im schreib-/leseunsicheren Modus befinden.

Das aktuelle Verhalten bleibt erhalten, da die Option "readwrite" als Standard beibehalten wird. Damit ist jeweils nur eine Instanz zulässig. Wenn auf einer Website mehrere FileSystemSyncAccessHandle-Objekte geöffnet werden müssen, aber keine Schreibvorgänge ausgeführt werden müssen, sollte die Option "read-only" verwendet werden. Die letzte Option "readwrite-unsafe" ermöglicht mehrere Instanzen sowie Lese- und Schreibzugriff. In diesem Fall können Schreibvorgänge, die über mehrere Tabs ausgeführt werden, zu Datenkonflikten führen. Websites müssten dann ein eigenes Sperrschema bereitstellen.

const handle1 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});
// This will succeed:
const handle2 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});

Exklusiver Autor für FileSystemWritableFileStream

Im Gegensatz zu FileSystemSyncAccessHandle können heute pro Dateieintrag mehrere Instanzen von FileSystemWritableFileStream erstellt werden. Es fehlt eine Option für einen exklusiven Autor. In Chrome 121 wird der Methode FileSystemAccessFileHandle.createWritable() ein optionaler mode-Parameter hinzugefügt, der die folgenden Werte hat:

  • Modus "exclusive": Es kann immer nur ein Autor vorhanden sein.
  • "siloed"-Modus: Dies ist die aktuelle Standardeinstellung. Jeder erstellte Writer hat eine eigene Auslagerungsdatei.
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();

Unterstützte Browser

Sowohl mehrere Leser und Schreiber für FileSystemSyncAccessHandle als auch der exklusive Schreiber für FileSystemWritableFileStream werden ab Chrome 121 unterstützt.

Testzeitraum für Entwickler starten

Wenn Sie die Funktion vor der Veröffentlichung von Chrome 121 testen möchten, setzen Sie das Flag #file-system-access-locking-scheme in chrome://flags auf Aktiviert. So können Sie die Funktion lokal auf Ihrem Computer testen.

Danksagungen

Dieser Artikel wurde von Daseul Lee, Nathan Memmott und Rachel Andrew geprüft.