如何使用JavaScript调用FileReader API通过本地文件路径直接读写文件?
结论
不可以,你不能直接把C:/Users/Code/example.txt这类本地文件绝对路径作为参数传给FileReader的读取方法。
原因
浏览器基于安全沙箱机制的限制,默认禁止JavaScript未经用户授权直接读写本地文件系统的任意路径,避免恶意网站偷偷窃取、篡改用户本地的敏感数据,引发安全风险。
合法的File对象获取途径
你传入printFile方法的file参数必须是浏览器原生的File或Blob类型对象,纯字符串格式的文件路径无法被识别,传入后会直接抛出参数类型错误。合法的File对象只能通过用户主动触发的交互行为获取,常见场景如下:
- 用户点击
<input type="file">元素选择文件后,从返回的FileList中取到对应的File对象 - 用户将本地文件拖拽到浏览器指定区域后,从拖拽的drop事件回调中提取File对象
- 若你是在Electron、NW.js这类桌面端跨端开发环境下,可直接使用框架提供的文件系统API读取指定路径的文件内容,再封装为Blob/File类型传入FileReader使用。
示例代码说明
你贴出的示例代码是标准的FileReader文本读取逻辑,只要传入合法的File对象即可正常工作:
function printFile(file) { const reader = new FileReader(); reader.onload = function(evt) { console.log(evt.target.result); }; reader.readAsText(file); }
内容的提问来源于stack exchange,提问作者Dinuk Wijesiri
相关产品推荐
相关产品推荐

