Ulepszenia interfejsu API umożliwiające pracę z plikami w przeglądarce

Obsługa wielu czytników i pisarzy w przypadku FileSystemSyncAccessHandle oraz obsługa tylko jednego zapisującego w przypadku FileSystemWritableFileStream.

Wiele operacji odczytu i zapisu w przypadku FileSystemSyncAccessHandle

Prywatny system plików źródła (czasami nazywany systemem plików zasobnika) umożliwia deweloperom dostęp do plików zoptymalizowanych pod kątem maksymalnej wydajności odczytu i zapisu. Dzieje się to za pomocą obiektów FileSystemSyncAccessHandle. Obecnie próba otwarcia wielu obiektów FileSystemSyncAccessHandle dla tego samego wpisu pliku kończy się niepowodzeniem z błędem NoModificationAllowedError. Ponieważ w niektórych przypadkach to ograniczenie może być uciążliwe, w Chrome 121 wprowadzamy nowy parametr mode dla metody FileSystemFileHandle.createSyncAccessHandle() z tymi dozwolonymi wartościami ciągu znaków:

  • "readwrite": jest to bieżące ustawienie domyślne. Po otwarciu dowolne metody obiektu FileSystemSyncAccessHandle są dozwolone. Dozwolona jest tylko 1 instancja tagu FileSystemSyncAccessHandle.
  • "read-only" : pozwala na korzystanie z urządzenia przez wielu użytkowników. Po otwarciu tylko metody FileSystemSyncAccessHandle typu „tylko do odczytu” są dozwolone: read(), getSize() i close(). Można utworzyć dowolną liczbę instancji usługi FileSystemSyncAccessHandle, o ile wszystkie są w trybie tylko do odczytu.
  • "readwrite-unsafe": pozwala na wielu autorów. Po otwarciu dowolne metody obiektu FileSystemSyncAccessHandle są dozwolone. Można utworzyć dowolną liczbę instancji usługi FileSystemSyncAccessHandle, o ile wszystkie są w trybie odczytu i zapisu.

Zachowane zostanie obecne działanie, ponieważ opcja "readwrite" pozostanie domyślną opcją, która pozwala na uruchomienie tylko jednego wystąpienia. Jeśli witryna musi otworzyć wiele obiektów FileSystemSyncAccessHandle, ale nie musi wykonywać operacji zapisu, należy użyć opcji "read-only". Ostatnia opcja "readwrite-unsafe" umożliwia użycie wielu instancji oraz odczyt i zapis. W takim przypadku zapisy mogą być niestabilne, jeśli są wykonywane z kilku kart, a witryny muszą mieć własny schemat blokowania.

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

Wyłączny zapis w przypadku FileSystemWritableFileStream

W przeciwieństwie do FileSystemSyncAccessHandle obecnie można utworzyć wiele wystąpień parametru FileSystemWritableFileStream na wpis pliku. Brakuje opcji dotyczącej autora na wyłączność. Chrome 121 dodaje do metody FileSystemAccessFileHandle.createWritable() opcjonalny parametr mode, który ma następujące wartości:

  • Tryb "exclusive": w danym momencie może być tylko jeden autor.
  • "siloed" tryb: jest to domyślny tryb. Każdy utworzony skrypt będzie miał własny plik wymiany.
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();

Obsługa przeglądarek

Od wersji 121 Chrome obsługuje obie funkcje: czytniki i pisarki dla FileSystemSyncAccessHandle oraz pisanie tylko dla FileSystemWritableFileStream.

Wpisz wersję próbną dla programistów

Aby przetestować funkcję przed wydaniem Chrome 121, wejdź w tryb testowania przez deweloperów. W tym celu ustaw flagę #file-system-access-locking-schemechrome://flags na Włączona. Dzięki temu możesz przetestować funkcję lokalnie na swoim komputerze.

Podziękowania

Ten artykuł został sprawdzony przez Daseul Lee, Nathan Memmott i Rachel Andrew.