FileSystemHandle.queryPermission()

安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。

Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

FileSystemHandle インターフェイスの queryPermission() メソッドは、現在のハンドルの現在の許可の状態を取得します。

構文

js
queryPermission(fileSystemHandlePermissionDescriptor)

引数

FileSystemHandlePermissionDescriptor 省略可

取得する対象の許可モードを指定するオブジェクトです。以下の設定ができます。

  • 'mode': 'read' または 'readwrite' の値を取りえます。

返値

'granted''denied''prompt' のいずれかの PermissionStatus.state です。

"prompt" が返った場合は、ウェブサイトはハンドルを用いた操作を行う前に requestPermission() を呼ぶ必要があるでしょう。"denied" が返った場合は、すべての操作が拒否されるでしょう。通常、ローカルファイルシステムのハンドルファクトリーから返されたハンドルは、初期状態で読み取りの許可状態として "granted" を返すでしょう。しかし、ユーザーが許可を取り消した場合以外に、IndexedDB から取得したハンドルも "prompt" を返す可能性が高いでしょう。

例外

TypeError

mode'read' でも 'readwrite' でもない値に設定されたとき投げられます。

以下の非同期関数は、ユーザーがファイルハンドルに読み取りまたは読み書きの許可を与えた場合 true を返します。許可が与えられていない場合、許可を要求します。

js
// fileHandle は FileSystemFileHandle
// withWrite は書き込みのとき true となる boolean 値

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

関連情報