FileSystem - 表示文件系统
非标准
该功能是非标准的。请尽量不要在生产环境中使用它:因为每个用户不一定会正常运行。它的实现可能存在很大的不兼容性,并且将来可能会改变行为。
FileSystem
是文件和目录条目 API 的接口,用于表示文件系统。可以从任何文件系统条目上的 filesystem
属性获取该对象。某些浏览器提供了额外的 API 来创建和管理文件系统,例如 Chrome 的 requestFileSystem()
方法。
该接口不会授予您访问用户文件系统的权限。相反,您将在浏览器沙箱中拥有一个 “虚拟驱动器”。如果您想获得对用户文件系统的访问权限,您需要通过用户调用,例如安装 Chrome 扩展程序。可以在该处找到相关的 Chrome API。
因为这是一个非标准 API,目前规范上没有该标准,所以请记住并非所有浏览器都实现它,可能只实现它的一小部分。有关详细信息,请查看浏览器兼容性部分。
基础概念
有两种方法可以访问 FileSystem
对象:
- 您可以通过调用
window.requestFileSystem()
直接询问一个代表直接为您的 Web 应用程序创建的沙盒文件系统。如果该调用成功,它将执行一个回调处理程序,该处理程序接收一个描述文件系统的FileSystem
对象作为参数。 - 您可以通过其
filesystem
属性从文件系统条目对象获取它。
属性
FileSystem.name
只读
一个 USVString
,表示文件系统的名称。该名称在公开的文件系统列表中是唯一的。
FileSystem.root
只读
一个 FileSystemDirectoryEntry
对象,表示文件系统的根目录。通过该对象,您可以访问文件系统中的所有文件和目录。
规范
规范 | 状态 | 备注 |
---|---|---|
File and Directory Entries API | 编者的草案 | 提议的 API 草案 |
该 API 没有正式的 W3C 或 WHATWG 规范。
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 13 webkit | 支持 WebKit 1 | 50 | 不支持 | 15 webkit | 不支持 |
name |
13 | 支持 | 50 | 不支持 | 15 | 不支持 |
root |
13 | 支持 | 50 | 不支持 | 15 | 不支持 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 未知 | 未知 | 未知 | 50 | 未知 | 15 webkit | 不支持 |
name |
未知 | 未知 | 未知 | 50 | 未知 | 15 | 不支持 |
root |
未知 | 未知 | 未知 | 50 | 未知 | 15 | 不支持 |
1. Edge 仅在拖放时使用 DataTransferItem.webkitGetAsEntry()
方法,才支持该 API。它不能用于文件或文件夹选择器面板(例如,当您使用带有 HTMLInputElement.webkitdirectory
属性的 input
元素时)。