FileSystem - 表示文件系统

非标准
该功能是非标准的。请尽量不要在生产环境中使用它:因为每个用户不一定会正常运行。它的实现可能存在很大的不兼容性,并且将来可能会改变行为。

FileSystem 是文件和目录条目 API 的接口,用于表示文件系统。可以从任何文件系统条目上的 filesystem 属性获取该对象。某些浏览器提供了额外的 API 来创建和管理文件系统,例如 Chrome 的 requestFileSystem() 方法。

该接口不会授予您访问用户文件系统的权限。相反,您将在浏览器沙箱中拥有一个 “虚拟驱动器”。如果您想获得对用户文件系统的访问权限,您需要通过用户调用,例如安装 Chrome 扩展程序。可以在该处找到相关的 Chrome API。

因为这是一个非标准 API,目前规范上没有该标准,所以请记住并非所有浏览器都实现它,可能只实现它的一小部分。有关详细信息,请查看浏览器兼容性部分。

基础概念

有两种方法可以访问 FileSystem 对象:

  1. 您可以通过调用 window.requestFileSystem() 直接询问一个代表直接为您的 Web 应用程序创建的沙盒文件系统。如果该调用成功,它将执行一个回调处理程序,该处理程序接收一个描述文件系统的 FileSystem 对象作为参数。
  2. 您可以通过其 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 元素时)。

相关链接