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.

Wielu czytników i zapisów dla 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": bieżąca wartość domyślna. Po otwarciu dozwolone są wszystkie metody w FileSystemSyncAccessHandle. Dozwolone jest tylko jedno wystąpienie 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ć wiele instancji FileSystemSyncAccessHandle, o ile wszystkie będą działać w trybie niebezpiecznym do 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 otwierać wiele obiektów FileSystemSyncAccessHandle, ale nie musi wykonywać zapisu, należy użyć opcji "read-only". Ostatnia opcja "readwrite-unsafe" umożliwia tworzenie wielu instancji oraz odczyt i zapis. W takim przypadku zapisy mogą być dla dorosłych, jeśli są wykonywane na wielu kartach, a strony 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 w nim opcji dla pisarzy, którzy mają z nimi kontakt na wyłączność. Chrome 121 dodaje do metody FileSystemAccessFileHandle.createWritable() opcjonalny parametr mode, który ma te wartości:

  • Tryb "exclusive": w danym momencie może być tylko jeden autor.
  • Tryb "siloed": bieżący tryb domyślny. 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 okres próbny dla deweloperów

Aby wziąć udział w testach wersji deweloperskiej i przetestować tę funkcję przed wprowadzeniem Chrome 121, ustaw flagę #file-system-access-locking-scheme w systemie chrome://flags na Włączono. 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.