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)

Получение доступа к файловой системе

Есть два способа получить доступ к файловой системе, определенным в текущем проекте спецификации:

Асинхронный 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
Предоставляет инструменты для работы с данным файлом со всеми необходимыми блокировками.
Metadata

Спецификации

Specification Status Comment
File and Directory Entries API Черновик Draft of proposed API

Этот API не имеет официальной спецификации W3C или WHATWG.

Совместимость с браузерами

Update compatibility data on GitHub
КомпьютерыМобильные
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung Internet
FileSystemChrome Полная поддержка 7
Альтернативное имя
Полная поддержка 7
Альтернативное имя
Альтернативное имя Использует нестандартное имя: DOMFileSystem
Edge Полная поддержка ≤18
С префиксом Замечания
Полная поддержка ≤18
С префиксом Замечания
С префиксом Требует вендорный префикс: WebKit
Замечания Edge only supports this API in drag-and-drop scenarios using the the DataTransferItem.webkitGetAsEntry() method. It's not available for use in file or folder picker panels (such as when you use an <input> element with the HTMLInputElement.webkitdirectory attribute.
Firefox Полная поддержка 50IE Нет поддержки НетOpera Полная поддержка 15
С префиксом
Полная поддержка 15
С префиксом
С префиксом Требует вендорный префикс: webkit
Safari Полная поддержка 11.1WebView Android Полная поддержка ≤37
Альтернативное имя
Полная поддержка ≤37
Альтернативное имя
Альтернативное имя Использует нестандартное имя: DOMFileSystem
Chrome Android Полная поддержка 18
Альтернативное имя
Полная поддержка 18
Альтернативное имя
Альтернативное имя Использует нестандартное имя: DOMFileSystem
Firefox Android Полная поддержка 50Opera Android Полная поддержка 14
С префиксом
Полная поддержка 14
С префиксом
С префиксом Требует вендорный префикс: webkit
Safari iOS Полная поддержка 11.3Samsung Internet Android Полная поддержка 1.0
С префиксом
Полная поддержка 1.0
С префиксом
С префиксом Требует вендорный префикс: webkit

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Смотрите замечания реализации.
Смотрите замечания реализации.
Использует нестандартное имя.
Использует нестандартное имя.
Требует вендорный префикс или другое имя для использования.
Требует вендорный префикс или другое имя для использования.
Update compatibility data on GitHub
КомпьютерыМобильные
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung Internet
FileSystemSync
Нестандартная
Chrome Полная поддержка 13
С префиксом
Полная поддержка 13
С префиксом
С префиксом Требует вендорный префикс: webkit
Edge Полная поддержка ≤79
С префиксом
Полная поддержка ≤79
С префиксом
С префиксом Требует вендорный префикс: webkit
Firefox Нет поддержки НетIE Нет поддержки НетOpera Полная поддержка 15
С префиксом
Полная поддержка 15
С префиксом
С префиксом Требует вендорный префикс: webkit
Safari Полная поддержка 6
С префиксом
Полная поддержка 6
С префиксом
С префиксом Требует вендорный префикс: webkit
WebView Android Полная поддержка ≤37
С префиксом
Полная поддержка ≤37
С префиксом
С префиксом Требует вендорный префикс: webkit
Chrome Android Полная поддержка 18
С префиксом
Полная поддержка 18
С префиксом
С префиксом Требует вендорный префикс: webkit
Firefox Android Нет поддержки НетOpera Android Полная поддержка 14
С префиксом
Полная поддержка 14
С префиксом
С префиксом Требует вендорный префикс: webkit
Safari iOS Полная поддержка 6
С префиксом
Полная поддержка 6
С префиксом
С префиксом Требует вендорный префикс: webkit
Samsung Internet Android Полная поддержка 1.0
С префиксом
Полная поддержка 1.0
С префиксом
С префиксом Требует вендорный префикс: webkit

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Нестандартная. Ожидается плохая кросс-браузерная поддержка.
Нестандартная. Ожидается плохая кросс-браузерная поддержка.
Требует вендорный префикс или другое имя для использования.
Требует вендорный префикс или другое имя для использования.

Смотрите также