Chrome 浏览器可以读写本地文件了,虽说是实验api,但是基本86+已经支持了

目前该API只能在https域名上使用!!!

实现逻辑:

1.唤醒浏览器选择文件夹、文件权限

复制代码
document.getElementById('button').addEventListener('click', async () => {
 getFile()
    });
 async function getFile () {
 // 打开文件选择器   记住FileSystemFileHandle 
        [fileHandle] = await window.showDirectoryPicker()

 if (fileHandle.kind === "file") {
 verifyPermission(fileHandle)
 // 运行针对文件的代码
        } else if (fileHandle.kind === "directory") {
 // 运行针对目录的代码
 verifyPermission(fileHandle)
        }
      }
 async function verifyPermission (fileHandle, withWrite) {
 const opts = {}
 if (withWrite) {
 opts.mode = "readwrite"
        }

 // 检查是否已经拥有相应权限,如果是,返回 true。
 if ((await fileHandle.queryPermission(opts)) === "granted") {
 return true
        }

 // 为文件请求权限,如果用户授予了权限,返回 true。
 if ((await fileHandle.requestPermission(opts)) === "granted") {
 return true
        }

 // 用户没有授权,返回 false。
 return false
      }

2.授权访问权限

3.得到FileSystemFileHandle

4.进行读写文件

FileSystemHandle - Web API 接口参考 | MDN

FileSystemFileHandle:createWritable() 方法 - Web API 接口参考 | MDN

Window:showDirectoryPicker() 方法 - Web API 接口参考 | MDN

相关推荐
YiHanXii22 分钟前
使用glb作为react的3D组件
javascript·react.js·3d
掘金安东尼25 分钟前
推荐!高效灵活的、可集成的、文本化绘图工具 —— PlantUML
前端·javascript·github
哀木26 分钟前
哈哈,commit + push 发布之后看见忘了 add 🤡
前端
古蓬莱掌管玉米的神33 分钟前
基于docker本地搭建Dify详细教程
前端·javascript
要天天开心啊36 分钟前
vue路由缓存问题
前端·vue.js·缓存
掘金一周1 小时前
对话即服务:Spring Boot整合MCP让你的CRUD系统秒变AI助手 | 掘金一周 3.28
前端·人工智能·ai编程
Ch1oy1 小时前
解锁 JavaScript DOM:节点操作的核心方法与最佳实践
开发语言·前端·javascript·ecmascript·html5
Jiude1 小时前
🚨两月没动的项目突然爆红❗一场由 ESLint 和格式化配置缺失引发的血案🧩
前端·visual studio code·cursor
howcode1 小时前
这次终于轮到前端给后端兜底了🤣
前端·javascript·vue.js
还是鼠鼠1 小时前
Node.js 监听 GET 和 POST 请求并处理参数
前端·javascript·vscode·node.js·json