JavaScript无法直接读写本地文件系统,只能通过File API异步读取用户主动选择的文件;需结合获取File对象,再用FileReader的readAsText等方法读取内容,并监听onload事件获取结果。
JavaScript 本身不能直接读写本地文件系统(出于安全限制),但可以通过浏览器提供的 File API 读取用户主动选择并上传的文件。核心是结合 和 FileReader 对象。
用户必须主动触发文件选择(比如点击上传按钮),不能自动读取任意路径的文件:
元素,监听 change 事件event.target.files 中获取 FileList 对象(类似数组)File 对象继承自 Blob,包含 name、size、type 等属性FileReader 是浏览器内置对象,支持异步读取文件为文本、DataURL、ArrayBuffer 等格式:
readAsText(file, encoding) → 读为字符串(常用,如读取 .txt、.json、.csv)readAsDataURL(file) → 读为 base64 字符串(适合图片预览)readAsArrayBuffer(file) → 读为二进制缓冲区(适合处理音视频、Excel 等)onload 获取结果:reader.result;出错时监听 onerror
并显示文本文件HTML:
JavaScript:
const input = document.getElementById('fileInput');files 列表,建议加防重复读逻辑progress 事件做加载提示readAsDataURL,再赋值给
readAsText,再用 JSON.parse() 或手动分割处理'UTF-8',避免乱码基本上就这些。关键不是“操作文件”,而是“响应用户选择 + 安全读取内容”。不复杂但容易忽略细节,比如没监听 onload 就直接取 result——那一定是 undefined。