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

news2024/9/21 22:46:30

目录

  • 说在前面
  • 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.result
        var 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>
    
  • 结果
    在这里插入图片描述

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

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

相关文章

Golang 高性能 Websocket 库 gws 使用与设计(一)

前言 大家好这里是&#xff0c;白泽&#xff0c;这期分析一下 golang 开源高性能 websocket 库 gws。 视频讲解请关注&#x1f4fa;B站&#xff1a;白泽talk 介绍 gws&#xff1a;https://github.com/lxzan/gws &#xff5c;GitHub &#x1f31f; 1.2k&#xff0c;高性能的 …

STM32(七):STM32指南者-通信实验

目录 一、基本概念通讯基本概念1、串行和并行2、同步通讯与异步通讯3、全双工、半双工、单工4、通讯速率 USART基本概念1、串口通讯基本概念2、物理层3、协议层4、指南者的串口USART I2C基本概念SPI基本概念 二、USART串口实验前期准备1、安装安装 USB 转串口驱动_CH3402、野火…

【中项】系统集成项目管理工程师-第5章 软件工程-5.1软件工程定义与5.2软件需求

前言&#xff1a;系统集成项目管理工程师专业&#xff0c;现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试&#xff0c;全称为“全国计算机与软件专业技术资格&#xff08;水平&#xff09;考试”&…

代码随想录算法训练营day22 | 77. 组合、216.组合总和III 、17.电话号码的字母组合

碎碎念&#xff1a;加油 参考&#xff1a;代码随想录 回溯算法理论基础 回溯和递归是相辅相成的&#xff0c;只要有递归&#xff0c;就会有回溯。回溯通常在递归函数的下面。 回溯搜索到法的效率&#xff1a; 它其实是纯暴力的做法&#xff0c;不是一个高效的算法。 回溯法能…

将控制台内容输出到文本文件

示例代码&#xff1a; Imports System.IO Module Module1Sub Main()Dim fs As New FileStream("D:\Desktop\test\输出结果.txt", FileMode.Create, FileAccess.Write, FileShare.None)Dim sw As New StreamWriter(fs)Console.SetOut(sw)Console.SetError(sw)For i …

Spring 自定义集合实现策略

Spring 自定义集合实现策略 日常开发中&#xff0c;如果遇到复杂业务通常会用一个接口实现多个实现类。需要根据对应参数判断获取不同实现类。例如支付场景&#xff0c;根据选择支付方式&#xff0c;选择相应路由。如果实现类不多&#xff0c;通常会这样。如果实现类多了&…

【论文10】复现代码tips

一、准备工作 1.创建一个虚拟环境 conda create --name drgcnn38 python=3.8.18 2.激活虚拟环境 conda activate drgcnn38 注意事项 在Pycharm中终端(terminal)显示PS而不是虚拟环境base 问题如下所示 解决方法:shell路径改成cmd.exe 重启终端显示虚拟环境 3.安装torch …

Linux:Linux进程控制

目录 1. 进程概念 1.1 并行和并发 2. 进程创建 2.1 fork()函数初识 2.2 写时拷贝 2.3 fork常规用法 2.4 fork调用失败的原因 3. 进程终止 3.1 进程场景 3.2 进程常见退出方法 4. 进程等待 4.1 进程等待必要性 4.2 进程等待的方法 4.2.1 wait方法&#xff1a; 4.…

推荐系统三十六式学习笔记:工程篇.常见架构24|典型的信息流架构是什么样的

目录 整体框架数据模型1.内容即Activity2.关系即连接 动态发布信息流排序数据管道总结 从今天起&#xff0c;我们不再单独介绍推荐算法的原理&#xff0c;而是开始进入一个新的模块-工程篇。 在工程实践的部分中&#xff0c;我首先介绍的内容是当今最热门的信息流架构。 信息…

关于数据存储位置的一点知识

关于数据存储位置的一点知识

c++红黑树,插入公式

概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或 Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制&#xff0c;红黑树确保没有一条路 径会比其他路径长出俩倍&#xff0c;因而是接近…

useRoute 函数的详细介绍与使用示例

title: useRoute 函数的详细介绍与使用示例 date: 2024/7/27 updated: 2024/7/27 author: cmdragon excerpt: 摘要&#xff1a;本文介绍了Nuxt.js中useRoute函数的详细用途与示例&#xff0c;展示了如何在组合式API中使用useRoute获取当前路由信息&#xff0c;包括动态参数、…

web服务器dns服务器配置服务

1.搭建一个nfs服务器&#xff0c;客户端可以从该服务器的/share目录上传并下载文件 server服务器&#xff1a; 创建 /share目录&#xff0c;并且编辑/etc/exports文件 更改目录权限为755&#xff1a; 755权限码的含义是&#xff1a; 文件所有者&#xff08;第一位数字7&…

Docker Desktop安装(通俗易懂)

1、官网 https://www.docker.com/products/docker-desktop/ 2、阿里云镜像 docker-toolbox-windows-docker-for-windows安装包下载_开源镜像站-阿里云 1. 双击安装文件勾选选项 意思就是&#xff1a; Use WSL 2 instead of Hyper-V (recommended) : 启用虚拟化&#xff0c;…

20240727生活沉思------------关于报考软考高级架构师

软考高级架构师 软考高级架构师 缴费 主要是报的千峰 1880元。 相对来说还算可以吧。。。其他也没给我机会选择啊 备考 我现在开始备考&#xff0c;考试时间2024年11月。 今天是正式开始7.27号。 给大家看看接下来我的课程安排&#xff1a; 额&#xff0c;还是满满当当的…

Redis从入门到超神-(十二)Redis监听Key的过期事件

前言 试想一个业务场景&#xff0c;订单超过30分钟未支付需要做自动关单处理,修改订单状态&#xff0c;库存回退等&#xff0c;你怎么实现&#xff1f;方案一&#xff1a;可以使用定时任务扫表&#xff0c;通过支付状态和下单时间来判断是否支付过期。但是这样的方案是非常消耗…

Vue入门(二)常用指令

一、Vue 常用指令 Vue 常用指令 - 指令&#xff1a;是带有 v- 前缀的特殊属性&#xff0c;不同指令具有不同含义。例如 v-html&#xff0c;v-if&#xff0c;v-for。 - 使用指令时&#xff0c;通常编写在标签的属性上&#xff0c;值可以使用 JS 的表达式。 - 常用指令 二、常用…

邦布带你从零开始实现图书管理系统(java版)

今天我们来从零开始实现图书管理系统。 图书管理系统 来看我们的具体的实现&#xff0c;上述视频。 我们首先来实现框架&#xff0c;我们要实现图书管理系统&#xff0c;首先要搭框架。 我们首先定义一个书包&#xff0c;在书包中定义一个书类和一个书架类&#xff0c;再定义…

AI大模型写的高考作文,你觉得怎么样?

下方为2024年高考新课标I卷语文作文题目&#xff0c;接下来将使用Chatgpt、文心一言、讯飞星火等众多AI大模型来写这篇高考作文 Chatgpt 标题&#xff1a;问题的演变与思考 随着互联网和人工智能技术的飞速发展&#xff0c;我们获得信息的方式和速度发生了前所未有的变化。曾经…

用PyTorch从零开始编写DeepSeek-V2

DeepSeek-V2是一个强大的开源混合专家&#xff08;MoE&#xff09;语言模型&#xff0c;通过创新的Transformer架构实现了经济高效的训练和推理。该模型总共拥有2360亿参数&#xff0c;其中每个令牌激活21亿参数&#xff0c;支持最大128K令牌的上下文长度。 在开源模型中&…