File and Directory Entries API
文件和目录条目 API 提供了一种方式来处理用户通过表单输入或拖放操作提供的目录和文件列表。它是 File API 的一个更高级的版本,File API 允许你处理单个文件。它最初旨在支持一个完整的虚拟文件系统,但现在只支持对用户提供的数据进行读取操作。
有关此 API、File System API 和 File API 之间的比较,请参阅 与其它文件相关 API 的关系。
访问文件系统
在当前规范草案中,有两种方式可以访问文件系统。
- 在处理拖放操作的
drop事件时,你可以调用DataTransferItem.webkitGetAsEntry()来获取被拖放项的FileSystemEntry。如果结果不是null,那么它就是一个被拖放的文件或目录,你可以使用文件系统调用来处理它。 HTMLInputElement.webkitEntries属性可以让你访问当前选定文件的FileSystemFileEntry对象,但这仅在它们被拖放到文件选择器时才有效(Firefox bug 1326031)。如果HTMLInputElement.webkitdirectory为true,则<input>元素将变成一个目录选择器,并且你可以获取每个选定目录的FileSystemDirectoryEntry对象。
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的对象,表示选定文件在其文件系统中的条目。这通常是FileSystemFileEntry或FileSystemDirectoryEntry对象。 File.webkitRelativePath-
返回
FileURL 的相对路径。 HTMLInputElement.webkitdirectory-
一个布尔值,表示
webkitdirectory属性。如果为true,则文件系统选择器接口仅接受目录而不是文件。 HTMLInputElement.webkitEntries-
描述当前选定的文件或目录。
规范
| 规范 |
|---|
| File and Directory Entries API # api-domfilesystem |
浏览器兼容性
加载中…