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 (en-US))
Получение доступа к файловой системе
Есть два способа получить доступ к файловой системе, определённым в текущем проекте спецификации:
- При обработке события
drop (en-US)
вы можете вызватьDataTransferItem.webkitGetAsEntry()
(en-US) что бы получитьFileSystemEntry
(en-US) для "брошенного" элемента. Если результат неnull
, то это брошенный файл или каталог, и вы можете использовать вызовы файловой системы для работы с ним. - Свойство
HTMLInputElement.webkitEntries
(en-US) позволяет получить объектFileSystemFileEntry
(en-US) для выбранного файла, но только если они перетаскиваются в средство выбора файлов ( баг 1326031 ). ЕслиHTMLInputElement.webkitdirectory
(en-US) являетсяtrue
, то<input>
работает для выбора директорий, и вы можете получить объектFileSystemDirectoryEntry
(en-US) для каждой выбранной директории.
Асинхронный API
Асинхронный API следует использовать для большинства операций, чтобы доступ к файловой системе не блокировал весь браузер, если он используется в основном потоке. Он включает в себя следующие интерфейсы:
FileSystem
(en-US)-
Представляет файловую систему.
FileSystemEntry
(en-US)-
Базовый интерфейс, представляющий одну запись в файловой системе. Это реализуется другими интерфейсами, которые представляют файлы или каталоги.
FileSystemFileEntry
(en-US)-
Представляет отдельный файл в файловой системе.
FileSystemDirectoryEntry
(en-US)-
Представляет отдельный каталог в файловой системе.
FileSystemDirectoryReader
(en-US)-
Созданный путём вызова
FileSystemDirectoryEntry.createReader()
(en-US), этот интерфейс предоставляет функции, которые позволяют вам читать содержимое каталога. FileSystemFlags
(en-US)-
Определяет набор значений, которые используются при указании флагов опций при вызове определённых методов в File System API.
FileError
-
Представляет ошибку, которая возникает при вызовах асинхронной файловой системы.
Также есть две глобальные функции (которые в настоящее время не являются частью спецификации и реализуются только в Google Chrome). Они доступны внутри объекта Window
и реализованы в LocalFileSystem
(en-US): requestFileSystem()
и resolveLocalFileSystemURL()
.
Синхронный API
Синхронный API следует использовать только в Worker
-ах; эти вызовы блокируются до тех пор, пока не закончат своё выполнение, и просто возвращают результаты вместо использования колбэков. Использование их в основном потоке заблокирует браузер, что непослушно. В противном случае интерфейсы ниже отражают интерфейсы асинхронного API.
FileSystemSync
(en-US)-
Представляет файловую систему.
FileSystemEntrySync
(en-US)-
Базовый интерфейс, представляющий одну запись в файловой системе. Это реализуется другими интерфейсами, которые представляют файлы или каталоги.
EntrySync
FileSystemFileEntrySync
-
Представляет отдельный файл в файловой системе.
FileSystemDirectoryEntrySync
-
Представляет отдельный каталог в файловой системе.
FileSystemDirectoryReaderSync
-
Созданный путём вызова
FileSystemDirectoryEntrySync.createReader()
, этот интерфейс предоставляет функции, которые позволяют вам читать содержимое каталога. FileException
(en-US)-
Представляет ошибку, которая возникает при вызовах синхронной файловой системы.
Также есть две глобальные функции (которые в настоящее время не являются частью спецификации и реализуются только в Google Chrome). Они доступны в объекте Worker
и реализованы вLocalFileSystemSync
(en-US): requestFileSystemSync()
и resolveLocalFileSystemSyncURL()
.
Другие интерфейсы
LocalFileSystem
(en-US)-
Предоставляет вам доступ к изолированной файловой системе.
LocalFileSystemSync
(en-US)LockedFile
(en-US)-
Предоставляет инструменты для работы с данным файлом со всеми необходимыми блокировками.
Спецификации
Specification | Status | Comment |
---|---|---|
File and Directory Entries API | Черновик | Draft of proposed API |
Этот API не имеет официальной спецификации W3C или WHATWG.
Совместимость с браузерами
BCD tables only load in the browser
BCD tables only load in the browser