Chrome浏览器支持直接读写本地文件了

简介: Chrome浏览器支持直接读写本地文件了

640.jpg

写在前面


最新版的Chrome(Chrome 83)支持直接读写本地文件了。


当前如何读取本地文件


目前最常见的读取本地文件方法:

1、使用input标签获取文件File对象。


<input type="file" />


2、使用FileReader读取文件。


var reader = new FileReader();reader.onload = function (event) {    // event.target.result就是读取的内容    ...};// 这里的file为File对象实例reader.readAsText(file);// reader.readAsDataURL(file);// reader.readAsArrayBuffer(file);


写文件方法:

很遗憾,现在没有直接写文件到本地的方法。不过,大概可以用下面的方法来实现:


var textFileAsBlob = new Blob(['hello word'], {type:'text/plain'});var downloadLink = document.createElement("a");downloadLink.download = 'test.txt';downloadLink.href = window.URL.createObjectURL(textFileAsBlob);downloadLink.click();



最新的Chrome浏览器下,如何读写文件


读文件


使用window.chooseFileSystemEntries这个api。需要注意的是,调用这个api,必须由用户的操作触发,比如点击等。


// 文件句柄let fileHandle;button.addEventListener('click', async (e) => {  fileHandle = await window.chooseFileSystemEntries();  console.log(fileHandle);});


调用api后,会弹出文件窗口,用户选择文件后,就可以拿到文件的句柄了。

640.png



接着,调用句柄的方法,就可以拿到文件内容了。


let fileHandle;button.addEventListener('click', async (e) => {  fileHandle = await window.chooseFileSystemEntries();  const file = await globalFileHandle.getFile();  const contents = await file.text(); // 这里的方法还有:slice(), stream(), arrayBuffer()});


写文件


写文件,分成两种情况,一种是直接写入原文件,一种是写入一个新文件。


写入原文件,我们只需要拿到原文件的句柄,调用句柄的方法就可以了。


const writable = await fileHandle.createWritable();await writable.write('new content');await writable.close();


写入新文件,首先需要新建一个文件,依然是调用window.chooseFileSystemEntries这个api,不过这次需要传入一些参数。


button.addEventListener('click', async function() {  const opts = {      type: 'save-file',      accepts: [{          description: 'Text file',          extensions: ['txt'],          mimeTypes: ['text/plain'],      }]  };  // 新建文件的句柄  const fileHandle = await window.chooseFileSystemEntries(opts);  ...             });


接着,再按照前文的方法,写入内容即可。


关于本地文件读写的更多信息,参考这篇文章:https://web.dev/native-file-system/


示例Demo


新的文件Api十分方便。我简单写了一个demo,在浏览器编辑本地文件。

640.png

640.png

640.png

cd3a84138bdaa68a446c855acb49e9b2.png


Demo体验地址和代码在这里(请使用最新版的桌面Chrome浏览器访问,且开启文件读写权限):


https://coypan.info/demo/chrome-native-file-system-api.html



写在后面


Chrome这一波更新,你怎么看?web app ?web os?

相关文章
|
2月前
|
Web App开发 数据采集 存储
WebDriver与Chrome DevTools Protocol:如何在浏览器自动化中提升效率
本文探讨了如何利用Chrome DevTools Protocol (CDP) 与 Selenium WebDriver 提升浏览器自动化效率,结合代理IP技术高效采集微博数据。通过CDP,开发者可直接操作浏览器底层功能,如网络拦截、性能分析等,增强控制精度。示例代码展示了如何设置代理IP、cookie及user-agent来模拟真实用户行为,提高数据抓取成功率与稳定性。适用于需要频繁抓取互联网数据的应用场景。
452 3
WebDriver与Chrome DevTools Protocol:如何在浏览器自动化中提升效率
|
12天前
|
Web App开发 缓存 安全
WIN11 Chrome 双击打不开闪退及Chrome浏览器不能拖拽文件crx
【11月更文挑战第6天】本文介绍了 WIN11 系统中 Chrome 浏览器双击打不开闪退及不能拖拽文件 crx 的原因和解决方法。包括浏览器版本过旧、扩展程序冲突、硬件加速问题、缓存过多、安全软件冲突、系统文件损坏、用户配置文件损坏等问题的解决方案,以及 crx 文件的屏蔽、权限问题和文件格式问题的处理方法。
|
14天前
|
Web App开发 Linux iOS开发
Chrome浏览器如何导出所有书签并导入书签
【11月更文挑战第4天】本文介绍了如何在 Chrome 浏览器中导出和导入书签。导出时,打开书签管理器,点击“整理”按钮选择“导出书签”,保存为 HTML 文件。导入时,同样打开书签管理器,点击“整理”按钮选择“导入书签”,选择之前导出的 HTML 文件即可。其他主流浏览器也支持导入这种格式的书签文件。
|
21天前
|
Web App开发 JavaScript 前端开发
使用 Chrome 浏览器的内存分析工具来检测 JavaScript 中的内存泄漏
【10月更文挑战第25天】利用 Chrome 浏览器的内存分析工具,可以较为准确地检测 JavaScript 中的内存泄漏问题,并帮助我们找出潜在的泄漏点,以便采取相应的解决措施。
135 9
|
1月前
|
Web App开发 开发者
|
1月前
|
Web App开发 JSON 安全
Chrome浏览器的跨域问题
【10月更文挑战第6天】
|
1月前
|
Web App开发 缓存 安全
Chrome浏览器启动参数大全
这是一组用于定制浏览器行为的命令行参数,包括但不限于:不停用过期插件、放行非安全内容、允许应用中心脚本、停用GPU加速视频、禁用桌面通知、禁用拓展及各类API、调整缓存设置、启用打印预览、隐身模式启动、设定语言、使用代理服务器、无头模式运行等。通过这些参数,用户可以根据需求灵活调整浏览器功能与性能。
|
2月前
|
Web App开发 存储 前端开发
Chrome浏览器的跨域问题
Chrome浏览器的跨域问题
|
3月前
|
Web App开发
Chrome——谷歌浏览器chrome如何模拟其他客户端
Chrome——谷歌浏览器chrome如何模拟其他客户端
105 1
Chrome——谷歌浏览器chrome如何模拟其他客户端
|
3月前
|
Web App开发 JSON 安全
【跨域难题终结者】:一键解锁Chrome浏览器神秘设置,彻底告别开发阶段的跨域烦恼!
【8月更文挑战第20天】跨域是前端开发常遇难题,尤其在前后端分离项目中。浏览器因安全考量会阻止不同源间的请求。本文对比CORS、JSONP、代理服务器等解法,并介绍开发阶段通过调整Chrome设置来临时禁用跨域限制的方法,提供启动Chrome及使用`fetch`API示例,适合快速测试。但请注意这不适用于生产环境,存在一定安全风险。
851 1
下一篇
无影云桌面