如何利用J*aScript的File System Access API访问本地文件?


File System Access API允许Web应用在安全上下文中直接读写本地文件。通过showOpenFilePicker()选择文件并获取FileSystemFileHandle,调用getFile()后使用text()、arrayBuffer()或stream()读取内容,支持文本、二进制和大文件。保存文件需用showS*eFilePicker()获取句柄,创建可写流并写入数据。该API仅在HTTPS或localhost下由用户触发时可用,且主要支持Chrome 86+,Safari等浏览器暂不支持,需降级处理。核心是“句柄”机制,确保安全访问。

如何利用javascript的file system access api访问本地文件?

J*aScript的File System Access API让Web应用可以直接与用户设备上的文件系统交互,允许读取、写入和保存本地文件,而无需通过传统的上传下载方式。这个API主要在现代浏览器(如Chrome 86+)中支持,适用于需要处理本地文档的应用,比如文本编辑器、代码编辑工具等。

请求访问单个文件

使用showOpenFilePicker()方法可以让用户选择一个或多个文件,并获取对它们的访问权限。

基本用法如下:

async function openFile() {
  try {
    const [fileHandle] = await window.showOpenFile_picker();
    const file = await fileHandle.getFile();
    const content = await file.text();
    console.log(content);
  } catch (err) {
    console.error("用户取消操作或发生错误", err);
  }
}
  

说明:

  • 调用showOpenFilePicker()会弹出文件选择框
  • 返回的是FileSystemFileHandle对象数组,从中可获取实际文件
  • getFile() 获取File对象,再用.text()读取文本内容

读取多种类型文件内容

根据文件类型,可以使用不同方法读取内容:

  • 文本文件(.txt, .json, .js 等):使用file.text()
  • 二进制数据(图片、PDF等):使用file.arrayBuffer()
  • 大文件流式读取:使用file.stream()

示例:读取JSON文件

async function openJSONFile() {
  const [handle] = await window.showOpenFilePicker({
    types: [{
      description: 'JSON 文件',
      accept: { 'application/json': ['.json'] }
    }]
  });
  const file = await handle.getFile();
  const content = await file.text();
  return JSON.parse(content);
}
  

将内容保存到文件

使用showS*eFilePicker()可以让用户指定保存路径并写入文件。

Facetune Facetune

一款在线照片和视频编辑工具,允许用户创建AI头像

Facetune 109 查看详情 Facetune

步骤包括:

  • 请求保存位置,获得文件句柄
  • 创建可写流
  • 写入内容并关闭流

示例:保存文本内容

async function s*eFile(content) {
  const handle = await window.showS*eFilePicker({
    suggestedName: 'document.txt',
    types: [{
      description: '文本文档',
      accept: { 'text/plain': ['.txt'] }
    }]
  });

  const writable = await handle.createWritable();
  await writable.write(content);
  await writable.close();
}
  

检查浏览器支持和安全限制

该API只能在安全上下文中使用(HTTPS 或 localhost),并且需要用户主动触发(如点击按钮)才能调用。

建议先检测是否支持:

if ('showOpenFilePicker' in window) {
  // 可以使用 File System Access API
} else {
  alert('当前浏览器不支持此功能,请使用 Chrome 或 Edge 最新版');
}
  

注意:Safari 和部分浏览器暂未支持,需做好降级处理(例如回退到 input[type=file])。

基本上就这些。掌握这几个核心方法后,就能实现较完整的本地文件读写功能。关键是理解“句柄(Handle)”的概念——它代表对某个文件或目录的引用,是安全模型的一部分,避免网页随意访问整个磁盘。

以上就是如何利用J*aScript的File System Access API访问本地文件?的详细内容,更多请关注其它相关文章!


# 的是  # 菜园坝网站推广方案  # 威海百度关键词快速排名  # 转笔网站建设游戏app  # 宝塔面板优化网站并发  # 五华区推广互联网营销  # 黑帽seo创始人  # 关键词百度排名怎么做  # 顺义seo网站营销推广  # 网站建设容易获客  # 福州营销推广培训学校在哪里  # 多个  # 就能  # 文档  # 压缩解压  # 大文件  # javascript  # 键值  # 最短  # 可以使用  # 句柄  # pdf  # ai  # safari  # 工具  # access  # edge  # app  # 浏览器  # json  # js  # java 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: iPhone14无法连接蓝牙设备如何解决  C#解析来自网络的XML流数据 实时错误处理与重试机制  Git命令与VS Code UI操作的对应关系解析  如何用mysql开发用户注册登录功能_mysql用户注册登录数据库设计  VS Code快捷键when上下文子句的妙用  《健康大兴》注册方法介绍  《全民k歌》音乐怎么下载到本地2025  iPhone17Pro如何连接蓝牙耳机_iPhone17Pro蓝牙设备配对与连接方法介绍  Go语言中方法接收器的选择:值类型还是指针类型?  PHP使用DOMDocument与XPath精准追加XML元素教程  b站如何剪辑视频_b站必剪app使用教程  研招网官方网站正版登录网址_中国研究生招生信息网官网首页  苹果自助维修计划支持哪些设备机型  鼠标没反应了怎么办 无线/有线鼠标失灵的解决方法【详解】  包子漫画官网链接官方地址 包子漫画在线观看官网首页入口  《杖剑传说》食谱大全  百度网盘如何设置上传限额  123平台官方登录入口 123邮箱网页端在线沟通工具  苹果11如何更换iCloud账号_苹果11账号切换的具体步骤  微信注销后银行卡解绑了吗_微信注销后银行卡解绑状态  电脑没有声音了怎么办 电脑声音问题的全面排查与修复指南【详解】  顺丰快递在线查询系统 顺丰快递官方查单入口  告别繁琐SEO!如何使用SyliusSitemap插件自动化生成网站地图,提升搜索引擎排名  Golang如何使用crypto/md5生成哈希_Golang MD5哈希生成方法  Python模块化编程:避免循环导入与共享函数的最佳实践  J*aScript桌面应用_Electron多进程架构实战  《星露谷物语》克林特好感度事件介绍  向日葵客户端怎么进行语音通话_向日葵客户端语音通话功能使用方法  《雅迪智行》用手机开锁方法  键盘声音异常怎么回事_键盘异响怎么处理  铁拳8在线玩 铁拳8在线秒玩入口  windows10怎么设置电源按钮_windows10按下电源键功能修改  邦丰播放器频道搜索设置  iSpring三分屏制作教程  我的世界游戏平台入口 我的世界官方官网直达链接  优化长HTML属性值:SonarQube警告与实用策略  以下哪一个是适应长期护理制度发展而设立的新职业  哈尔滨城市通昵称修改方法  抖音如何进行蓝V认证 抖音企业号申请所需资料与流程  支付宝网页版在线入口 支付宝官网电脑登录入口  小红书网页版怎么进 小红书网页版通用入口  J*aScript文本高亮功能优化:解决多词匹配错误与精确分割策略  mysql如何管理数据库账户_mysql数据库账户管理技巧  如何在CSS中设置背景图像:一个全面指南  苹果官网国补入口在哪  深入理解随机递归函数的确定性:内部节点、叶节点与时间复杂度分析  sublime text 4如何安装_最新版sublime下载与汉化教程  修复UI元素交互障碍:从“开始”按钮到信息框的平滑过渡实现  Cassandra中复合主键、二级索引与ORDER BY排序的限制与解决方案  如何在 WordPress 前端实现内容提交:古腾堡编辑器的替代方案与实践 

 2025-10-13

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.