FileSystemHandle:queryPermission() 方法

安全上下文: 此项功能仅在一些支持的浏览器安全上下文(HTTPS)中可用。

实验性: 这是一项实验性技术
在将其用于生产之前,请仔细检查浏览器兼容性表格

FileSystemHandle 接口的 queryPermission() 方法用于查询当前句柄目前的权限状态。

语法

js
queryPermission(fileSystemHandlePermissionDescriptor)

参数

FileSystemHandlePermissionDescriptor 可选

一个对象,指定需要查询的权限模式,包含以下选项:

  • 'mode':可以是 'read''readwrite'

返回值

PermissionStatus.state (en-US),值为 'granted''denied''prompt' 三者之一。

如果此方法返回了“prompt”,则站点必须在对句柄进行任何操作前调用 requestPermission() 请求授权。如果此方法返回了“denied”,则任何操作都会被拒绝。从本地文件系统句柄构造器返回的句柄通常会在初始时对只读权限状态返回“granted”。但是,除开用户收回了权限的情况,从 IndexedDB 获取的句柄也有可能会返回“prompt”。

异常

TypeError

如果 mode 指定的值不是 'read' 或者 'readwrite',则抛出此异常。

示例

以下异步函数会在用户对文件句柄授予了只读或读写权限时返回 true,若无权限则请求权限。

js
// fileHandle 是一个 FileSystemFileHandle
// withWrite 是一个布尔值,如果要求写入则需传入 true

async function verifyPermission(fileHandle, withWrite) {
  const opts = {};
  if (withWrite) {
    opts.mode = "readwrite";
  }

  // 检查是否已经拥有相应权限,如果是,返回 true。
  if ((await fileHandle.queryPermission(opts)) === "granted") {
    return true;
  }

  // 为文件请求权限,如果用户授予了权限,返回 true。
  if ((await fileHandle.requestPermission(opts)) === "granted") {
    return true;
  }

  // 用户没有授权,返回 false。
  return false;
}

规范

Specification
File System Access
# api-filesystemhandle-querypermission

浏览器兼容性

BCD tables only load in the browser

参见