chrome html 读写文件路径,Chrome浏览器支持直接读写本地文件了

本文首发于公众号:符合预期的CoyPan

写在前面

最新版的Chrome(Chrome 83, 须要开启权限)支持直接读写本地文件了。javascript

开启方法:Chrome浏览器升级到83版本以上;访问chrome://flags/,开启 Native File System API 选项

当前如何读写本地文件

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

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

二、使用FileReader读取文件。web

var reader = new FileReader();

reader.onload = function (event) {

// event.target.result就是读取的内容

...

};

// 这里的file为File对象实例

reader.readAsText(file);

// reader.readAsDataURL(file);

// reader.readAsArrayBuffer(file);

写文件方法:chrome

很遗憾,如今没有直接写文件到本地的方法。不过,大概能够用下面的方法来实现:api

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,必须由用户的操做触发,好比点击等。app

// 文件句柄

let fileHandle;

button.addEventListener('click', async (e) => {

fileHandle = await window.chooseFileSystemEntries();

console.log(fileHandle);

});

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

1460000022895798

接着,调用句柄的方法,就能够拿到文件内容了。spa

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);

...

});

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

示例Demo

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

1460000022895801

1460000022895799

1460000022895802

1460000022895797

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

写在后面

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

1460000022895800

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550211.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最长单调递增子序列_最长递增子序列(动态规划 + 二分搜索)

题目给定数组arr,返回arr的最长递增子序列举例:arr [2,1,5,3,6,4,8,9,7],返回的最长递增子序列为[1,3,4,8,9]要求:如果arr的长度为N,请实现时间复杂度为O(nlogn)的方法。分析这一题也是经典的动态规划,那么…

在正式使用计算机账务系统的银行对账功能,用友ERP-U8管理系统认证考试理论题...

《电算化会计》自测题(理论部分附答案)一、判断题:1.系统管理是用友ERP管理系统的运行基础,它为其他子系统提供了公共的账套、年度账及其它相关基础数据,各子系统的操作员也需要在系统管理中统一设置并分配权限。√2.用户自动拥有所属角色所拥…

数据异常排查

数据异常是每个数据分析师最常见的工作之一,大部分人缺乏方法论,排查起来没有方向感和层次感,这里看看,那里看看,非常耽误时间,可能最后也没有结果。所以,需要认真去制定一套标准化流程去做这件…

二叉排序树(BinarySortTree)

相关知识: 二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。 二叉树中的左右子树不可随意交换。 根节点:一棵树最上面的节点称为根节点。 父…

fpga初始化错误_FPGA复位设计常见问题及处理方法

一开始接触到FPGA,肯定都知道”复位“,即简单又复杂。简单是因为初学时,只需要按照固定的套路——按键开关复位,见寄存器就先低电平复位一次,这样一般情况可以解决99%的问题,甚至简单的设计,就不…

惠普台式计算机系列,惠普发布设计笔记本、设计台式电脑等Z系列产品

惠普发布新一代惠普Z系列产品,包含设计笔记本、设计台式电脑、显示器和VR等产品。惠普Z系列设计笔记本HP ZBook 14u G6配有4K显示屏,支持100% Adobe RGB色域显示,拥有600尼特亮度,满足创意族群对色彩的精确要求。HP ZBook 15u G6图…

计算机应用需要英语水平,英语对计算机专业的重要性及如何提高英语水平

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼计算机研发人员要掌握的专业英语要求教高,必须掌握大量的专业术语和缩略语; 熟练掌握语法和惯用法的表达方式和功能; 能阅读英文文档和技术资料,阅读熟读在100词/分钟以上; 能借助字典翻译专业技术图书; 能使…

python asyncio 并发编程_asyncio并发编程

一. 事件循环1.注:实现搭配:事件循环回调(驱动生成器【协程】)epoll(IO多路复用),asyncio是Python用于解决异步编程的一整套解决方案;基于asynico:tornado,gevent,twisted(Scrapy,dj…

ORM多表操作之多对多查询

创建多对多的关系 authormodels.ManyToManyFleld(" ")  (推荐) 书籍对象它的所有关联作者 book_obj.authors.all() 掌握:通过filter values(双下划线)进行多对多的关联查询(形式一对多) django是将python语句翻译成sql语句执行 聚…

计算机的iscsi配置,我们将了解如何设置自己的支持iscsi配置的存储节点

iSCSI代表Internet小型计算机系统接口。它用于使用块级数据传输通过TCP / IP访问网络上的存储。NFS与iSCSI之间通常存在比较。关键区别在于NFS是文件级实现,而iSCSI是块级实现。这适用于TCP / IP层,并允许通过局域网(LAN)发送SCSI命令。在诸如iSCSI和光纤…

介词for和with 和of的用法_英语中的for,to,at,of,in,on,with的用法

英语中的for,to,at,of,in,on,with的用法英语中的for,to,at,of,in,on,with的用法人气:594 ℃时间:2019-11-07 00:56:02优质解答一、介词按其构成可分为:1.简单介词 at,in,on,to,since,until 等.如:Hes worked there since 1998.2.复…

转帖:解决System.Data.OracleClient requires Oracle client software version 8.1.7 or greater

原帖:http://blog.csdn.net/killer000777/archive/2008/12/03/3438519.aspx 原来当Oracle 9.2运行在NTFS的分区上时,对于某些非administrator组的用户,ORACLE_HOME 目录是不可见的,而在windows server 2003下Asp.net应用使用的帐户…

超级计算机发展及现状论文,浅谈超级计算机发展的过程及研究现状

摘要:当前,多核技术的不断发展和日渐成熟,使得处理器的性能得到巨大提升.但是对于存储设备来说,无论是速度还是容量都无法跟上这种步伐.随着处理器和其它子系统发展差距的日益加大,超级计算机的效率问题逐渐成为人们讨论和研究的热点,大部分的实际应用在超级计算机上…

P1047 校门外的树 Noip2005普及组第二题

洛谷红题(咳咳)>>>>点击跳转 题目描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是11米。我们可以把马路看成一个数轴,马路的一端在数轴00的位置,另一端在LL的位置;数轴上…

裂变红包码的制作_红包墙裂变源码活码玩法 实现多次裂变传播

这是一个移动互联网迅速发展的时代,每个人都是一个自媒体,都有自己的朋友圈和社群。门店除了依靠自己雄厚的实力外,还应该充分用好每个店员的资源,让每个店员这个自媒体为门店所用,将能力发挥到极致。红包推出的超级红…

计算机基础知识复习资料,计算机基础知识复习资料

.Word 资料Ch1 计算机基础知识1.1 现代信息技术1.1.1、特征:●以数字技术和电子技术为基础;●以计算机及其软件为核心;●采用电子技术(包括激光技术)进行信息的收集、传递、加工、存储、显示与控制。1.1.2、数字技术一、二进位数字——比特(b…

linux上安装Docker

Docker的三大核心概念:镜像、容器、仓库 镜像:类似虚拟机的镜像、用俗话说就是安装文件 容器:类似一个轻量级的沙箱,容器是从镜像创建应用运行实例,可以将其启动、开始、停止、删除、而这些容器都是相互隔离、互不可见…

python节日贺卡图片_节日贺卡图片制作手工

手工贺卡,相信你也对贺卡感到很大的兴趣的吧,手工贺卡。手工贺卡范文,欢迎阅读。所需材料:黑纸胶水压钱粉红色的纸具体步骤:1黑色和红色纸剪成宽度为5mm的长条的,画出你喜欢的花树轮廓,使用笔温柔的拉伸黑色…

幼儿园计算机教师论文,幼儿园中班教师论文

幼儿园中班教师论文导语:幼儿教育是什么?幼儿应如何正确接受教育?幼儿接受与不接受教育区别又如 何?这些看似简单的问题,其实不然。在当今科技发达的今天,幼儿的教育起着承前启后的重要阶段,不仅…

ASP.NET 5 入门 (2) – 自定义配置

原文:ASP.NET 5 入门 (2) – 自定义配置ASP.NET 5 入门 (2) – 自定义配置 ASP.NET 5 理解和入门 建立和开发ASP.NET 5 项目 初步理解ASP.NET5的配置 正如我的第一篇文章ASP.NET 5 (vNext) 理解和概述 所说,ASP.NET 5的具有全新的配置机制,我们可以通过以下几点来进行理解: 支持…