FileSystemHandle: queryPermission() method

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

Note: This feature is available in Web Workers.

Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

The queryPermission() method of the FileSystemHandle interface queries the current permission state of the current handle.

Syntax

js
queryPermission(descriptor)

Parameters

descriptor Optional

An object which specifies the permission mode to query for. Options are as follows:

'mode' Optional

Can be either 'read' or 'readwrite'.

Return value

A Promise that resolves with PermissionStatus.state which is one of 'granted', 'denied' or 'prompt'. It may also reject with one of the exceptions below.

If this resolves with "prompt", the website will have to call requestPermission() before any operations on the handle can be done. If this resolves with "denied" any operations will reject. Usually handles returned by the local file system handle factories will initially resolves with "granted" for their read permission state. However, other than through the user revoking permission, a handle retrieved from IndexedDB is also likely to resolves with "prompt".

Exceptions

TypeError

Thrown if mode is specified with a value other than 'read' or 'readwrite'

Examples

The following asynchronous function returns true if user has granted read or readwrite permissions to the file handle. Permission is requested if not.

js
// fileHandle is a FileSystemFileHandle
// withWrite is a boolean set to true if write

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

  // Check if we already have permission, if so, return true.
  if ((await fileHandle.queryPermission(opts)) === "granted") {
    return true;
  }

  // Request permission to the file, if the user grants permission, return true.
  if ((await fileHandle.requestPermission(opts)) === "granted") {
    return true;
  }

  // The user did not grant permission, return false.
  return false;
}

Specifications

Specification
File System Access
# api-filesystemhandle-querypermission

Browser compatibility

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
queryPermission
Experimental

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
Experimental. Expect behavior to change in the future.

See also