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
-
Предоставляет вам доступ к изолированной файловой системе.
LocalFileSystemSync
LockedFile
-
Предоставляет инструменты для работы с данным файлом со всеми необходимыми блокировками.
Спецификации
Specification |
---|
File and Directory Entries API # api-domfilesystem |
Совместимость с браузерами
BCD tables only load in the browser