Улучшения API для работы с файлами в браузере

Поддержка нескольких читателей и писателей для FileSystemSyncAccessHandle и эксклюзивного писателя для FileSystemWritableFileStream.

Несколько читателей и писателей для FileSystemSyncAccessHandle

Частная файловая система origin (иногда также называемая файловой системой bucket) позволяет разработчикам получать доступ к файлам, оптимизированным для максимальной производительности чтения и записи. Это происходит через объекты FileSystemSyncAccessHandle . В настоящее время попытка открыть несколько объектов FileSystemSyncAccessHandle для одной и той же записи файла завершается ошибкой NoModificationAllowedError . Поскольку существуют случаи использования, когда это ограничение является ограничивающим, Chrome 121 вводит новый параметр mode для метода FileSystemFileHandle.createSyncAccessHandle() со следующими допустимыми строковыми значениями:

  • "readwrite" : Это текущее значение по умолчанию. После открытия разрешены любые методы FileSystemSyncAccessHandle . Разрешен только один экземпляр FileSystemSyncAccessHandle .
  • "read-only" : разрешает несколько читателей. После открытия разрешены только методы чтения FileSystemSyncAccessHandle : read() , getSize() и close() . Можно создать несколько экземпляров FileSystemSyncAccessHandle , если все они находятся в режиме только для чтения.
  • "readwrite-unsafe" : разрешает несколько записей. После открытия разрешены любые методы FileSystemSyncAccessHandle . Можно создать несколько экземпляров FileSystemSyncAccessHandle , если все они находятся в режиме readwrite-unsafe.

Текущее поведение сохраняется за счет сохранения параметра "readwrite" в качестве значения по умолчанию, что позволяет за раз открывать только один экземпляр. Если сайту необходимо открыть несколько объектов FileSystemSyncAccessHandle , но не требуется выполнять запись, следует использовать параметр "read-only" . Наконец, последний параметр "readwrite-unsafe" допускает несколько экземпляров, а также чтение и запись. В этом случае запись может быть опасной, если выполняется с нескольких вкладок, и сайтам необходимо будет предоставить собственную схему блокировки.

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

Эксклюзивный писатель для FileSystemWritableFileStream

В отличие от FileSystemSyncAccessHandle , сегодня можно создавать несколько экземпляров FileSystemWritableFileStream для каждой записи файла. Чего не хватает, так это способа предоставить возможность для эксклюзивного писателя. Chrome 121 добавляет необязательный параметр mode в метод FileSystemAccessFileHandle.createWritable() , который имеет следующие значения:

  • "exclusive" режим: одновременно может существовать только один писатель.
  • "siloed" режим: это текущий режим по умолчанию. Каждый созданный писатель будет иметь свой собственный файл подкачки.
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();

Поддержка браузера

Обе функции — несколько средств чтения и записи для FileSystemSyncAccessHandle и эксклюзивная функция записи для FileSystemWritableFileStream — поддерживаются начиная с Chrome 121.

Примите участие в испытательном сроке разработки

Чтобы войти в dev-тестирование для тестирования функции перед запуском Chrome 121, установите флаг #file-system-access-locking-scheme в chrome://flags на Enabled . Это позволит вам протестировать функцию локально на вашем компьютере.

Благодарности

Эту статью рецензировали Дасеул Ли , Натан Меммотт и Рейчел Эндрю .

,

Поддержка нескольких читателей и писателей для FileSystemSyncAccessHandle и эксклюзивного писателя для FileSystemWritableFileStream.

Несколько читателей и писателей для FileSystemSyncAccessHandle

Частная файловая система origin (иногда также называемая файловой системой bucket) позволяет разработчикам получать доступ к файлам, оптимизированным для максимальной производительности чтения и записи. Это происходит через объекты FileSystemSyncAccessHandle . В настоящее время попытка открыть несколько объектов FileSystemSyncAccessHandle для одной и той же записи файла завершается ошибкой NoModificationAllowedError . Поскольку существуют случаи использования, когда это ограничение является ограничивающим, Chrome 121 вводит новый параметр mode для метода FileSystemFileHandle.createSyncAccessHandle() со следующими допустимыми строковыми значениями:

  • "readwrite" : Это текущее значение по умолчанию. После открытия разрешены любые методы FileSystemSyncAccessHandle . Разрешен только один экземпляр FileSystemSyncAccessHandle .
  • "read-only" : разрешает несколько читателей. После открытия разрешены только методы чтения FileSystemSyncAccessHandle : read() , getSize() и close() . Можно создать несколько экземпляров FileSystemSyncAccessHandle , если все они находятся в режиме только для чтения.
  • "readwrite-unsafe" : разрешает несколько записей. После открытия разрешены любые методы FileSystemSyncAccessHandle . Можно создать несколько экземпляров FileSystemSyncAccessHandle , если все они находятся в режиме readwrite-unsafe.

Текущее поведение сохраняется за счет сохранения параметра "readwrite" в качестве значения по умолчанию, что позволяет за раз открывать только один экземпляр. Если сайту необходимо открыть несколько объектов FileSystemSyncAccessHandle , но не требуется выполнять запись, следует использовать параметр "read-only" . Наконец, последний параметр "readwrite-unsafe" допускает несколько экземпляров, а также чтение и запись. В этом случае запись может быть опасной, если выполняется с нескольких вкладок, и сайтам необходимо будет предоставить собственную схему блокировки.

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

Эксклюзивный писатель для FileSystemWritableFileStream

В отличие от FileSystemSyncAccessHandle , сегодня можно создавать несколько экземпляров FileSystemWritableFileStream для каждой записи файла. Чего не хватает, так это способа предоставить возможность для эксклюзивного писателя. Chrome 121 добавляет необязательный параметр mode в метод FileSystemAccessFileHandle.createWritable() , который имеет следующие значения:

  • "exclusive" режим: одновременно может существовать только один писатель.
  • "siloed" режим: это текущий режим по умолчанию. Каждый созданный писатель будет иметь свой собственный файл подкачки.
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();

Поддержка браузера

Обе функции — несколько средств чтения и записи для FileSystemSyncAccessHandle и эксклюзивная функция записи для FileSystemWritableFileStream — поддерживаются начиная с Chrome 121.

Примите участие в испытательном сроке разработки

Чтобы войти в dev-тестирование для тестирования функции перед запуском Chrome 121, установите флаг #file-system-access-locking-scheme в chrome://flags на Enabled . Это позволит вам протестировать функцию локально на вашем компьютере.

Благодарности

Эту статью рецензировали Дасеул Ли , Натан Меммотт и Рейчел Эндрю .