File and Directory Entries API

文件和目录条目 API 提供了一种方式来处理用户通过表单输入或拖放操作提供的目录和文件列表。它是 File API 的一个更高级的版本,File API 允许你处理单个文件。它最初旨在支持一个完整的虚拟文件系统,但现在只支持对用户提供的数据进行读取操作。

有关此 API、File System APIFile API 之间的比较,请参阅 与其它文件相关 API 的关系

访问文件系统

在当前规范草案中,有两种方式可以访问文件系统。

History

最初的文件系统 API 是为了让浏览器能够支持访问用户存储设备上的沙盒化虚拟文件系统而创建的。标准化该规范的工作早在 2012 年就已停止,但到那时,Google Chrome 已经包含了该 API 的自有实现。随着时间的推移,许多流行的网站和 Web 应用程序开始使用它,而且通常不提供任何回退到标准 API 的方法,甚至在使用前也不检查 API 是否可用。Mozilla 则选择实现其他可以解决许多相同问题的 API,例如 IndexedDB;有关更多见解,请参阅博文 Why no FileSystem API in Firefox?

因此,许多流行的网站在 Chrome 以外的浏览器上无法正常工作。为了解决这个问题,Google API 中能够达成共识的功能被标准化为文件和目录条目 API,然后在其他浏览器中实现。

接口

文件和目录条目 API 包含以下接口

FileSystem

表示一个文件系统。

FileSystemEntry

表示文件系统中单个条目的基本接口。它由表示文件或目录的其他接口实现。

FileSystemFileEntry

表示文件系统中的单个文件。

FileSystemDirectoryEntry

表示文件系统中的单个目录。

FileSystemDirectoryReader

通过调用 FileSystemDirectoryEntry.createReader() 创建,此接口提供了读取目录内容的功能。

其他接口的扩展

DataTransferItem.webkitGetAsEntry()

返回一个基于 FileSystemEntry 的对象,表示选定文件在其文件系统中的条目。这通常是 FileSystemFileEntryFileSystemDirectoryEntry 对象。

File.webkitRelativePath

返回 File URL 的相对路径。

HTMLInputElement.webkitdirectory

一个布尔值,表示 webkitdirectory 属性。如果为 true,则文件系统选择器接口仅接受目录而不是文件。

HTMLInputElement.webkitEntries

描述当前选定的文件或目录。

规范

规范
File and Directory Entries API
# api-domfilesystem

浏览器兼容性

另见