花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 19|回复: 5

JS:打开本地文本文件

[复制链接]
  • TA的每日心情
    奋斗
    2026-4-7 14:24
  • 签到天数: 1782 天

    [LV.Master]伴坛终老

    3177

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

    发表于 2026-4-7 14:30 | 显示全部楼层 |阅读模式

    请马上登录,朋友们都在花潮里等着你哦:)

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x

    出于安全考虑,JS被设置成没有直接读取本地文件的权限,除非用户允许。

    通过使用文件 API,web 内容可以要求用户选择本地文件,然后读取这些文件的内容。这种选择可以通过使用 HTML <input type="file"> 元素或通过拖放来完成。

    —— MDN

    用户在 <input type="file"> 元素中选择的文件或使用拖放方式拖曳到指定接收器的文件,被视为允许打开,此后,JS的文件 API 就可以对文件进行一系列读取操作。FileReader 是一个文件API接口,它允许 Web 应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File 或 Blob 对象指定要读取的文件或数据。

    以下是实例演示。脚本规定了两种文件格式,如果在打开文件时选择“所有文件”可以突破格式限制,但脚本内部只处理文本类型格式的文件):

    <style> .pa { margin: 20px auto; width: 1000px; } .pa textarea { width: 100%; height: 100%; height: 560px; padding: 12px; resize: none; font-size: 16px; } .pa h1 { text-align: center; } </style> <div class="pa"> <h1>打开本地文本文件演示</h1> <!-- accept属性规定可打开的文件类型 --> <p><input id="fileOpen" type="file" accept=".txt, .html"></input></p> <p><textarea id="txtArea"></textarea></p> </div> <script> function openFile(event) { // event 参数将由浏览器事件管理系统自动注入,下行是检验 // console.log(event.type, event); // → change, Event const file = event.target.files[0]; // 如果没有选择文件或文件类型不符合则放弃执行后面的语句 if (!file && !file.type.startsWith('text')) return; const reader = new FileReader(); // 实例化FileReader对象为reader // reader加载完成后 reader.onload = () => { txtArea.value = reader.result; // 显示读取结果 }; // 若reader加载出错 reader.onerror = () => { txtArea.value = '读取文件时出错'; // 显示错误信息 }; // 关键 :使用readASText方法读取文件的文本内容 reader.readAsText(file); } fileOpen.onchange = openFile; // 选择文件后调用openFile(event)函数 </script>

    看起来也不特别复杂,核心在于:用户授权(选择了文件)、使用 FileReader API处理文件,最后将处理结果输出。当然,任何API都有自己的规范和方法,需要逐一熟悉方可将其应用于实际场景中。

    另外,从 <input type="file"> 元素获得的文件列表页富含很多有用信息,这些信息以对象的形式存储,里面包含文件名、文件类型、文件大小、最后修改时间等等,文件内容则如上述示例那样需要 FileReader API 读取。

    评分

    参与人数 3威望 +100 金钱 +200 经验 +100 收起 理由
    红影 + 50 + 100 + 50 匠心独运,细节精致入微!
    杨帆 + 30 + 60 + 30 匠心独运,细节精致入微!
    山人 + 20 + 40 + 20 创意十足,赞一个!

    查看全部评分

  • TA的每日心情
    开心
    2026-3-16 20:30
  • 签到天数: 93 天

    [LV.6]常住居民II

    11

    主题

    220

    回帖

    2155

    积分

    金牌会员

    Rank: 60Rank: 60Rank: 60Rank: 60Rank: 60Rank: 60

    发表于 2026-4-7 14:32 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2026-4-7 12:48
  • 签到天数: 498 天

    [LV.9]以坛为家II

    359

    主题

    3817

    回帖

    2万

    积分

    版主

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生鹰傲苍穹飞龙在天王者至尊大将风范花潮版主

    发表于 2026-4-7 15:24 | 显示全部楼层
    挺好,这个可以直接查看、编辑.html~谢谢马老师精彩分享
    ★青春是一个人的精神生命,奋斗是一个人最大的体面,学习是一个人最美的姿态。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2026-4-7 14:24
  • 签到天数: 1782 天

    [LV.Master]伴坛终老

    3177

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2026-4-7 19:58 | 显示全部楼层
    杨帆 发表于 2026-4-7 15:24
    挺好,这个可以直接查看、编辑.html~谢谢马老师精彩分享

    这个主要还是演示打开本地文件(本例主要处理文本类型格式的文档)。

    要想做出可打开、编辑、保存的功能,需要更为复杂而且复杂到不知多少倍的实现机制。最经典的实现案例是 Only Office,它的网页版可以编写 office 套件所能做到的一切。

    JS还有一系列的与操作系统接洽的API,统称为文件系统API,通过它们可以做一切事情(前提是基于指定的安全机制,比如 https 协议,同时还需要浏览器的支持——这个也是微软放弃IE的主因之一,IE由于走了极端的发展道路且渐行渐远已经无法和国际标准看齐,尽管它在发展历程中有很多不可忽视的贡献)。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1897

    主题

    32万

    回帖

    39万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2026-4-7 20:14 | 显示全部楼层
    马黑黑 发表于 2026-4-7 19:58
    这个主要还是演示打开本地文件(本例主要处理文本类型格式的文档)。

    要想做出可打开、编辑、保存的功 ...

    (本例主要处理文本类型格式的文档)
    怪不得打不开word文件。
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2026-4-7 14:24
  • 签到天数: 1782 天

    [LV.Master]伴坛终老

    3177

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2026-4-7 20:36 | 显示全部楼层
    红影 发表于 2026-4-7 20:14
    (本例主要处理文本类型格式的文档)
    怪不得打不开word文件。

    Word文档的 type 类型是极度复杂的富文本文档,协议和 text 不一样,打开它需要复杂千万倍的机制。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|服务支持:DZ动力|huachaowang.com Inc. ( 蜀ICP备17032287号-1 )

    GMT+8, 2026-4-7 20:59 , Processed in 0.076879 second(s), 26 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表