当前位置: 首页 > news >正文

【前端/js】使用js读取本地文件(xml、二进制)内容

目录

  • 说在前面
  • FileReader
  • DOMParser
  • 文本文件
  • 二进制文件

说在前面

  • 浏览器版本:Microsoft Edge 126.0.2 (正式版本) (64 位)

FileReader

  • MDN
  • FileReader 接口允许 Web 应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 FileBlob 对象指定要读取的文件或数据。

DOMParser

  • MDN
  • DOMParser 可以将存储在字符串中的 XMLHTML 源代码解析为一个 DOM Document

文本文件

  • xml文件为例
  • vue
    <script setup>function btnClick() {document.getElementById("file1").click()
    }function openFile(e) {var file = e.target.files[0]var reader = new FileReader()reader.onload = function(e) {var content = e.target.resultvar parser = new DOMParser()var xmlDoc = parser.parseFromString(content, "text/xml")console.log(xmlDoc)}reader.readAsText(file)
    }
    </script><template><button @click="btnClick">Open</button><input id="file1" type="file" style="display:none" @change="openFile">
    </template>
    
  • 结果
    在这里插入图片描述

二进制文件

  • navmesh为例
    <script setup>
    import * as THREE from 'three';
    import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls';
    import {init as initRecastNavigation,NavMeshQuery,
    } from '@recast-navigation/core';
    import { generateSoloNavMesh } from '@recast-navigation/generators';
    import { DebugDrawer, getPositionsAndIndices } from '@recast-navigation/three';
    import { exportNavMesh, importNavMesh } from 'recast-navigation';// initialise recast-navigation
    initRecastNavigation();// setup scene
    const renderer = new THREE.WebGLRenderer();
    document.body.appendChild(renderer.domElement);const scene = new THREE.Scene();
    const camera = new THREE.PerspectiveCamera();
    camera.position.set(10, 10, -10);const orbitControls = new OrbitControls(camera, renderer.domElement);// handle resizing
    const onWindowResize = () => {camera.aspect = window.innerWidth / window.innerHeight;camera.updateProjectionMatrix();renderer.setSize(window.innerWidth, window.innerHeight);
    };
    onWindowResize();window.addEventListener('resize', onWindowResize);// animate
    const animate = () => {requestAnimationFrame(animate);renderer.render(scene, camera);
    };animate();function btnClick() {document.getElementById('file1').click();
    }function openBinFile(e) {var file = e.target.files[0];var reader = new FileReader();reader.onload = function (e) {var content = new Uint8Array(e.target.result);const { navMesh } = importNavMesh(content);const debugDrawer = new DebugDrawer();debugDrawer.drawNavMesh(navMesh);scene.add(debugDrawer);console.log(content);};reader.readAsArrayBuffer(file);
    }
    </script><template><button @click="btnClick">Open</button><input id="file1" type="file" style="display: none" @change="openBinFile" />
    </template>
    
  • 结果
    在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Redis的使用场景——热点数据缓存
  • 昇思25天学习打卡营第19天|DCGAN生成漫画头像
  • 【VSCode实战】Golang无法跳转问题竟是如此简单
  • 浏览器内核的理解
  • 业务记录:处理动态表头的CSV/EXCEL文件
  • 电子档案系统与双层PDF及基于Elasticsearch全文检索技术的探索
  • 大语言模型-GPT2-Generative Pre-Training2
  • java实现OCR图片识别,RapidOcr开源免费
  • 前端工程化-vue项目创建
  • Kafka知识总结(事务+数据存储+请求模型+常见场景)
  • 《Java初阶数据结构》----6.<优先级队列之PriorityQueue底层:堆>
  • USB3.0的等长要求到底是多少?
  • Unity 物理动画:利用物理引擎创造逼真动作
  • Python面试整理-常用标准库
  • PHP反序列化漏洞
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • gitlab-ci配置详解(一)
  • JavaScript 基础知识 - 入门篇(一)
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • JavaScript标准库系列——Math对象和Date对象(二)
  • Laravel 中的一个后期静态绑定
  • Sequelize 中文文档 v4 - Getting started - 入门
  • SSH 免密登录
  • 从零开始的无人驾驶 1
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 前端路由实现-history
  • 微信支付JSAPI,实测!终极方案
  • 想写好前端,先练好内功
  • 新书推荐|Windows黑客编程技术详解
  • 自动记录MySQL慢查询快照脚本
  • ​Java并发新构件之Exchanger
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • $nextTick的使用场景介绍
  • (003)SlickEdit Unity的补全
  • (C)一些题4
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (Qt) 默认QtWidget应用包含什么?
  • (第30天)二叉树阶段总结
  • (二十九)STL map容器(映射)与STL pair容器(值对)
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (转) Android中ViewStub组件使用
  • (转)EOS中账户、钱包和密钥的关系
  • (转)可以带来幸福的一本书
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .NET Core 中的路径问题
  • .NET NPOI导出Excel详解
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .NET/C# 使窗口永不获得焦点
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .Net6 Api Swagger配置
  • .NET成年了,然后呢?
  • .NET牛人应该知道些什么(2):中级.NET开发人员