0

0

如何在网页中安全请求并使用文件系统编辑权限

聖光之護

聖光之護

发布时间:2025-12-29 19:49:33

|

273人浏览过

|

来源于php中文网

原创

如何在网页中安全请求并使用文件系统编辑权限

现代浏览器不支持直接通过 `navigator.permissions.query({ name: 'file-system' })` 获取“文件编辑”权限——该权限并不存在于标准 web api 中;实际应使用 file api 读取用户主动选择的文件,配合 `showsavefilepicker()` 等新 api 实现有限的读写操作。

在 Web 开发中,浏览器出于安全考虑,严格限制网页对本地文件系统的直接访问权限。你无法像桌面应用那样申请全局“文件编辑”权限(例如 file-system 并非标准权限名,navigator.permissions.query({ name: 'file-system' }) 会抛出错误或返回 undefined)。但现代浏览器(Chrome 86+、Edge 86+、Firefox 117+ 支持部分功能)已逐步引入 Web File System Access API,允许用户授权网页读取、写入单个文件或目录——前提是用户主动触发(如点击按钮),且全程需用户显式确认。

✅ 正确做法:基于用户交互的文件读写

1. 读取文件(无需特殊权限,推荐入门)

使用 + FileReader 是最兼容、最安全的方式:





✅ 优势:零权限请求、全浏览器支持(包括 Safari)、无需 HTTPS(开发时 localhost 也可用)。

2. 写入/编辑文件(需用户授权,仅 Chromium/Edge 稳定支持)

使用 showOpenFilePicker() 和 showSaveFilePicker() 实现真正的“编辑后保存”:



⚠️ 注意事项:

顶级域名交易系统
顶级域名交易系统

1.后台管理登陆直接在网站地址后输入后台路径,默认为 /admin,进入后台管理登陆页面,输入管理员用户名和密码,默认为 中文 admin ,登陆后台。2.后台管理a.注销管理登陆 (离开后台管理时,请点击这里正常退出,确保系统安全)b.查看使用帮助 (如果你在使用系统时,有不清楚的,可以到这里来查看)c.管理员管理 (这里可以添加,修改,删除系统管理员,暂不支持,分权限管理操作)d.分类管理 (

下载
  • 必须运行在 HTTPS 或 localhost 环境下;
  • 用户必须主动点击触发(不能自动调用);
  • 首次调用 show*FilePicker() 会弹出系统级文件对话框,用户需手动选择;
  • file-system 权限名无效,不要尝试 navigator.permissions.query({ name: 'file-system' });
  • 替代方案:如需更复杂操作(如目录遍历),可结合 showDirectoryPicker()(需用户授予整个文件夹权限)。

3. 其他常见权限的正确查询方式

虽然“文件编辑”不是标准权限,但你可以合法查询以下权限:

// 示例:检查通知、地理位置、摄像头等
const perms = ['notifications', 'geolocation', 'camera', 'microphone'];
for (const name of perms) {
  try {
    const status = await navigator.permissions.query({ name });
    console.log(`${name}: ${status.state}`); // 'granted', 'denied', 'prompt'
  } catch (e) {
    console.log(`${name} 不受支持或不可查询`);
  }
}

? 总结:Web 的核心原则是 最小权限 + 用户主导。永远不要假设权限存在,而应通过 try/catch 处理拒绝,并优雅降级(例如:若 showSaveFilePicker 不可用,则改用 download 属性触发下载)。

最终建议:从 FileReader 读取开始实践,再渐进升级到 File System Access API。所有操作都应以提升用户体验为目标,而非绕过浏览器安全模型。

相关专题

更多
chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

715

2023.08.11

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

713

2023.11.06

edge是什么浏览器
edge是什么浏览器

Edge是一款由Microsoft开发的网页浏览器,是Windows 10操作系统中默认的浏览器,其目标是提供更快、更安全、更现代化的浏览器体验。本专题为大家提供edge浏览器相关的文章、下载、课程内容,供大家免费下载体验。

1243

2023.08.21

IE浏览器自动跳转EDGE如何恢复
IE浏览器自动跳转EDGE如何恢复

ie浏览器自动跳转edge的解决办法:1、更改默认浏览器设置;2、阻止edge浏览器的自动跳转;3、更改超链接的默认打开方式;4、禁用“快速网页查看器”;5、卸载edge浏览器;6、检查第三方插件或应用程序等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

372

2024.03.05

如何解决Edge打开但没有标题的问题
如何解决Edge打开但没有标题的问题

若 Microsoft Edge 浏览器打开后无标题(窗口空白或标题栏缺失),可尝试以下方法解决: 重启 Edge:关闭所有窗口,重新启动浏览器。 重置窗口布局:右击任务栏 Edge 图标 → 选择「最大化」或「还原」。 禁用扩展:进入 edge://extensions 临时关闭插件测试。 重置浏览器设置:前往 edge://settings/reset 恢复默认配置。 更新或重装 Edge:检查最新版本,或通过控制面板修复

827

2025.04.24

undefined是什么
undefined是什么

undefined是代表一个值或变量不存在或未定义的状态。它可以作为默认值来判断一个变量是否已经被赋值,也可以用于设置默认参数值。尽管在不同的编程语言中,undefined可能具有不同的含义和用法,但理解undefined的概念可以帮助我们更好地理解和编写程序。本专题为大家提供undefined相关的各种文章、以及下载和课程。

3844

2023.07.31

网页undefined是什么意思
网页undefined是什么意思

网页undefined是指页面出现了未知错误的意思,提示undefined一般是在开发网站的时候定义不正确或是转换不正确,或是找不到定义才会提示undefined未定义这个错误。想了解更多的相关内容,可以阅读本专题下面的文章。

2887

2024.08.14

网页undefined啥意思
网页undefined啥意思

本专题整合了undefined相关内容,阅读下面的文章了解更多详细内容。后续继续更新。

101

2025.12.25

俄罗斯搜索引擎Yandex最新官方入口网址
俄罗斯搜索引擎Yandex最新官方入口网址

Yandex官方入口网址是https://yandex.com;用户可通过网页端直连或移动端浏览器直接访问,无需登录即可使用搜索、图片、新闻、地图等全部基础功能,并支持多语种检索与静态资源精准筛选。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1

2025.12.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
如何进行WebSocket调试
如何进行WebSocket调试

共1课时 | 0.1万人学习

TypeScript全面解读课程
TypeScript全面解读课程

共26课时 | 5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号