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

Über das private Dateisystem des Ursprungs (manchmal auch als Bucket-Dateisystem bezeichnet) können Entwickler auf Dateien zugreifen, die für eine 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 Fä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 Schreibvorgang für FileSystemWritableFileStream

Im Gegensatz zu FileSystemSyncAccessHandle können heute mehrere Instanzen von FileSystemWritableFileStream pro Dateieintrag 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:

  • "exclusive"-Modus: Es kann jeweils nur einen Schreiber geben.
  • "siloed"-Modus: Das 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

Beide Funktionen, mehrere Leser und Schreiber für FileSystemSyncAccessHandle und exklusiver 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.