讲师中心 微信公众号

工具推荐

视频效率加速
Seko
Seko

AI短剧一键生成成片

立刻MV
立刻MV

低成本歌曲 MV、视频生成

AniShort
AniShort

AI短剧协同制作平台

Laper
Laper

剧本策划到成片协作

如何让 Web 应用安全、直接地访问和操作本地文件系统

陌静君_8443

陌静君_8443

发布时间:2025-12-31 15:30:08

|

673人浏览过

|

来源于php中文网

原创

如何让 Web 应用安全、直接地访问和操作本地文件系统

现代 web 应用可通过 file system access api 实现对本地文件和目录的读写、重命名、删除等操作,无需后端代理,但需 https 环境与用户显式授权。

Web 应用传统上受限于沙箱安全模型,无法直接访问本地文件系统——这既是保护用户隐私的关键机制,也长期制约了桌面级体验的实现。然而,随着 File System Access API 的逐步落地(Chrome 86+、Edge 92+、Firefox 125+ 支持),这一限制已被安全、可控地突破。

该 API 的核心在于以用户主动授权为前提,通过一系列异步方法获取对文件或目录的持久化句柄(FileSystemFileHandle 或 FileSystemDirectoryHandle),而非一次性读取文件内容。例如:

// 打开单个文件(支持多选)
const [fileHandle] = await window.showOpenFilePicker({
  multiple: false,
  types: [{
    description: 'Text files',
    accept: { 'text/plain': ['.txt'] }
  }]
});

// 获取可写流并保存新内容
const writable = await fileHandle.createWritable();
await writable.write('Hello from the web!');
await writable.close();

对于目录操作(如 VS Code Web 版所依赖的功能),可调用 showDirectoryPicker():

CDP浏览器大师
CDP浏览器大师

CDP浏览器大师:通过Chrome DevTools Protocol驱动已登录浏览器实现自动化任务,解决反爬封号、选择器失效、SPA路由难导航、固定sleep不准四大痛点。核心能力包括UA伪装、WebGL/Canvas指纹混淆、智能等待、动态选择器以及可视化调试。

下载
const dirHandle = await window.showDirectoryPicker();
for await (const entry of dirHandle.values()) {
  console.log(entry.name, entry.kind === 'file' ? 'file' : 'directory');
}

⚠️ 关键注意事项:

  • ✅ 必须运行在 HTTPS 环境下(localhost 除外,但需确保开发服务器启用 TLS 或使用 http://localhost);
  • ✅ 所有操作均为用户手势触发(如点击按钮),不可静默执行;
  • ❌ 不支持跨域 iframe 中调用;
  • ? 浏览器兼容性有限:目前 Chrome/Edge 主流支持,Firefox 逐步完善,Safari 尚未实现(截至 2024 年);
  • ? 句柄不具备路径字符串,无法绕过权限模型——每个操作均需用户再次确认(首次授权后可勾选“记住此选择”以减少提示频次)。

总结而言,File System Access API 并非替代 ,而是其能力的延伸:它将临时文件读取升级为可持久化、可写入、可遍历的文件系统交互,是构建 Web IDE、本地文档编辑器、离线素材管理工具等高性能客户端应用的技术基石。实际开发中,建议结合特性检测与降级方案(如 input[type=file] + IndexedDB 缓存),兼顾兼容性与用户体验。

热门AI工具

更多
切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

讯飞智文

一款面向学习和办公场景的AI文档创作工具,可辅助生成PPT与Word文档,提高资料整理和内容制作效率。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

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

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

2966

2023.08.11

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

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

6159

2023.11.06

Chrome开启无痕模式
Chrome开启无痕模式

本专题整合了Chrome无痕模式开启相关内容,阅读专题下面的文章了解更多详细教程。

4407

2026.03.24

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

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

3142

2023.08.21

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

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

3054

2024.03.05

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

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

3392

2025.04.24

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

1918

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

3144

2023.09.04

Go-Zero零基础入门教程
Go-Zero零基础入门教程

本专题整理Go-Zero的入门知识,从框架定位、环境准备到跑通第一个API服务,讲清目录分层、配置加载、日志与中间件的基本用法,并对比Gin、Kratos的差异,帮助Go开发者建立整体认知,判断它是否适合当前项目。

0

2026.11.12

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MDN CSS 文档与布局指南
MDN CSS 文档与布局指南

共0课时 | 0人学习

Postman安装指南
Postman安装指南

共0课时 | 0人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn