0

0

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

碧海醫心

碧海醫心

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

|

553人浏览过

|

来源于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():

DM建站系统汽车保养维修HTML5网站模板1.5
DM建站系统汽车保养维修HTML5网站模板1.5

DM建站系统汽车保养维修HTML5网站模板,DM企业建站系统。是由php+mysql开发的一套专门用于中小企业网站建设的开源cms。DM系统的理念就是组装,把模板和区块组装起来,产生不同的网站效果。可以用来快速建设一个响应式的企业网站( PC,手机,微信都可以访问)。后台操作简单,维护方便。DM企业建站系统安装步骤:第一步,先用phpmyadmin导入sql文件。 第二步:把文件放到你的本地服务器

下载
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 缓存),兼顾兼容性与用户体验。

相关专题

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

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

726

2023.08.11

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

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

714

2023.11.06

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

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

1251

2023.08.21

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

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

373

2024.03.05

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

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

831

2025.04.24

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

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

248

2023.08.03

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

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

205

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1435

2023.10.24

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

0

2025.12.31

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
如何进行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号