Miglioramenti dell'API per l'uso dei file nel browser

Supporto per più lettori e scrittori per FileSystemSyncAccessHandle e per writer esclusivo per FileSystemWritableFileStream.

Più lettori e scrittori per FileSystemSyncAccessHandle

Il file system privato dell'origine (a volte chiamato anche file system del bucket) consente agli sviluppatori di accedere ai file ottimizzati per ottenere le massime prestazioni in lettura e scrittura. Ciò avviene tramite gli oggetti FileSystemSyncAccessHandle. Al momento, il tentativo di aprire più oggetti FileSystemSyncAccessHandle per la stessa voce di file non riesce con un NoModificationAllowedError. Poiché in alcuni casi d'uso questo vincolo limita questo vincolo, Chrome 121 introduce un nuovo parametro mode per il metodo FileSystemFileHandle.createSyncAccessHandle() con i seguenti valori stringa consentiti:

  • "readwrite": questa è l'impostazione predefinita corrente. Una volta aperto, è consentito qualsiasi metodo su FileSystemSyncAccessHandle. È consentita una sola istanza di FileSystemSyncAccessHandle.
  • "read-only" : consente più lettori. Una volta aperti, sono consentiti solo metodi di tipo lettura su FileSystemSyncAccessHandle: read(), getSize() e close(). È possibile creare più istanze di FileSystemSyncAccessHandle purché siano tutte in modalità di sola lettura.
  • "readwrite-unsafe": consente più autori. Una volta aperto, è consentito qualsiasi metodo su FileSystemSyncAccessHandle. È possibile creare più istanze di FileSystemSyncAccessHandle, purché siano tutte in modalità lettura/scrittura non sicura.

Il comportamento attuale viene preservato mantenendo l'opzione "readwrite" come predefinita, che consente una sola istanza alla volta. Se un sito deve aprire più oggetti FileSystemSyncAccessHandle ma non deve eseguire le scritture, è necessario utilizzare l'opzione "read-only". Infine, l'ultima opzione "readwrite-unsafe" consente l'utilizzo di più istanze, nonché di operazioni di lettura e scrittura. In questo caso, le scritture possono essere per adulti se eseguite da più schede e i siti dovrebbero fornire il proprio schema di blocco.

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

Writer esclusivo per FileSystemWritableFileStream

A differenza di FileSystemSyncAccessHandle, oggi è possibile creare più istanze di FileSystemWritableFileStream per ogni voce di file. Manca un modo per offrire un'opzione a uno scrittore esclusivo. Chrome 121 aggiunge al metodo FileSystemAccessFileHandle.createWritable() un parametro facoltativo mode contenente i seguenti valori:

  • Modalità "exclusive": può esistere un solo autore alla volta.
  • Modalità "siloed": è l'attuale impostazione predefinita. Ogni writer creato avrà il proprio file di scambio.
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();

Supporto del browser

Entrambe le funzionalità, più lettori e scrittori per FileSystemSyncAccessHandle e writer esclusivo per FileSystemWritableFileStream, sono supportate a partire da Chrome 121.

Accedi alla prova sviluppatore

Per accedere alla prova di sviluppo per testare la funzionalità prima del lancio di Chrome 121, imposta il flag #file-system-access-locking-scheme in chrome://flags su Enabled (Attivato). In questo modo potrai testare la funzionalità localmente sulla tua macchina.

Ringraziamenti

Questo articolo è stato esaminato da Daseul Lee, Nathan Memmott e Rachel Andrew.