File and Directory Entries API
Не стандартно: Эта функция не стандартизирована. Мы не рекомендуем использовать нестандартные функции в действующих проектах, так как их поддержка браузерами ограничена, а поведение может измениться или быть удалено. Тем не менее, в некоторых случаях, когда нет стандартного решения, они могут быть подходящей альтернативой.
API доступа к файлам и директориям имитирует локальную файловую систему, в которой веб-приложения могут перемещаться и получать доступ к файлам. Вы можете разрабатывать приложения, которые читают, записывают и создают файлы и/или каталоги в виртуальной изолированной файловой системе.
Примечание: Поскольку это нестандартный API, спецификация которого в настоящее время не входит в стандарт, важно помнить, что не все браузеры реализуют его, а те, которые поддерживают, могут реализовывать только небольшие его части. Дополнительные сведения в разделе Browser compatibility
Существуют два очень похожих API в зависимости от того, хотите ли вы асинхронного или синхронного поведения. Синхронный API предназначен для использования внутри Worker и будет возвращать желаемые значения. Асинхронный API не будет блокировать выполнение кода, а API не будет возвращать значения; вместо этого вам нужно будет предоставить колбэк-функцию для обработки одного или нескольких ответов.
Предупреждение:
Firefox реализация File System API очень ограничена: не поддерживается создание файлов. Доступ к файлам осуществляется только через <input> элемент (см. так же HTMLInputElement) или путём перетаскивания файла/папки (drag and drop). Firefox также не реализует синхронный API. Внимательно проверьте совместимость браузера для любой части API, которую вы используете. ( см. Поддержка File System API в Firefox)
Получение доступа к файловой системе
Есть два способа получить доступ к файловой системе, определённым в текущем проекте спецификации:
- При обработке события
dropвы можете вызватьDataTransferItem.webkitGetAsEntry()что бы получитьFileSystemEntryдля "брошенного" элемента. Если результат неnull, то это брошенный файл или каталог, и вы можете использовать вызовы файловой системы для работы с ним. - Свойство
HTMLInputElement.webkitEntriesпозволяет получить объектFileSystemFileEntryдля выбранного файла, но только если они перетаскиваются в средство выбора файлов ( баг 1326031 ). ЕслиHTMLInputElement.webkitdirectoryявляетсяtrue, то<input>работает для выбора директорий, и вы можете получить объектFileSystemDirectoryEntryдля каждой выбранной директории.
Асинхронный API
Асинхронный API следует использовать для большинства операций, чтобы доступ к файловой системе не блокировал весь браузер, если он используется в основном потоке. Он включает в себя следующие интерфейсы:
FileSystem-
Представляет файловую систему.
FileSystemEntry-
Базовый интерфейс, представляющий одну запись в файловой системе. Это реализуется другими интерфейсами, которые представляют файлы или каталоги.
FileSystemFileEntry-
Представляет отдельный файл в файловой системе.
FileSystemDirectoryEntry-
Представляет отдельный каталог в файловой системе.
FileSystemDirectoryReader-
Созданный путём вызова
FileSystemDirectoryEntry.createReader(), этот интерфейс предоставляет функции, которые позволяют вам читать содержимое каталога. FileSystemFlags-
Определяет набор значений, которые используются при указании флагов опций при вызове определённых методов в File System API.
FileError-
Представляет ошибку, которая возникает при вызовах асинхронной файловой системы.
Также есть две глобальные функции (которые в настоящее время не являются частью спецификации и реализуются только в Google Chrome). Они доступны внутри объекта Window и реализованы в LocalFileSystem: requestFileSystem() и resolveLocalFileSystemURL().
Синхронный API
Синхронный API следует использовать только в Worker-ах; эти вызовы блокируются до тех пор, пока не закончат своё выполнение, и просто возвращают результаты вместо использования колбэков. Использование их в основном потоке заблокирует браузер, что непослушно. В противном случае интерфейсы ниже отражают интерфейсы асинхронного API.
FileSystemSync-
Представляет файловую систему.
FileSystemEntrySync-
Базовый интерфейс, представляющий одну запись в файловой системе. Это реализуется другими интерфейсами, которые представляют файлы или каталоги.
EntrySync FileSystemFileEntrySync-
Представляет отдельный файл в файловой системе.
FileSystemDirectoryEntrySync-
Представляет отдельный каталог в файловой системе.
FileSystemDirectoryReaderSync-
Созданный путём вызова
FileSystemDirectoryEntrySync.createReader(), этот интерфейс предоставляет функции, которые позволяют вам читать содержимое каталога. FileException-
Представляет ошибку, которая возникает при вызовах синхронной файловой системы.
Также есть две глобальные функции (которые в настоящее время не являются частью спецификации и реализуются только в Google Chrome). Они доступны в объекте Worker и реализованы вLocalFileSystemSync: requestFileSystemSync() и resolveLocalFileSystemSyncURL().
Другие интерфейсы
LocalFileSystem-
Предоставляет вам доступ к изолированной файловой системе.
LocalFileSystemSyncLockedFile-
Предоставляет инструменты для работы с данным файлом со всеми необходимыми блокировками.
Спецификации
| Specification |
|---|
| File and Directory Entries API> # api-domfilesystem> |
Совместимость с браузерами
Loading…