File system access api DomeException:当前上下文中的用户代理或平台不允许该请求
尝试使用的File system access api DomeException:当前上下文中的用户代理或平台不允许该请求,file-system-access-api,File System Access Api,尝试使用的getFile()方法访问文件时,可能会发生以下错误:doException:当前上下文中的用户代理或平台不允许该请求。 此代码适用于: async function getTheFile() { // open file picker [fileHandle] = await window.showOpenFilePicker(pickerOpts); // get file contents const fileData = await fileHandle.ge
getFile()
方法访问文件时,可能会发生以下错误:doException:当前上下文中的用户代理或平台不允许该请求。
此代码适用于:
async function getTheFile() {
// open file picker
[fileHandle] = await window.showOpenFilePicker(pickerOpts);
// get file contents
const fileData = await fileHandle.getFile();
}
但是,如果存储文件句柄
(例如,使用IndexedDB)的目的是即使在页面刷新后仍保持对该文件的访问,则它将不起作用。刷新页面后,getFile()
方法将抛出DomeException错误
发生了什么?刷新页面(或关闭应用程序的所有选项卡)时,浏览器不再具有访问该文件的权限 有一种方法可用于
文件系统句柄
,可用于在尝试读取文件之前确定是否可以访问该文件
示例来自:
一旦权限==被授予,此函数将返回true;如果权限被拒绝
或提示
,则此函数将重新提示用户访问
async function verifyPermission(fileHandle, readWrite) {
const options = {};
if (readWrite) {
options.mode = 'readwrite';
}
// Check if permission was already granted. If so, return true.
if ((await fileHandle.queryPermission(options)) === 'granted') {
return true;
}
// Request permission. If the user grants permission, return true.
if ((await fileHandle.requestPermission(options)) === 'granted') {
return true;
}
// The user didn't grant permission, so return false.
return false;
}