ToB企服应用市场:ToB评测及商务社交产业平台
标题:
【前端/js】使用js读取本地文件(xml、二进制)内容
[打印本页]
作者:
小秦哥
时间:
2024-11-1 14:32
标题:
【前端/js】使用js读取本地文件(xml、二进制)内容
说在前面
浏览器版本:Microsoft Edge 126.0.2 (正式版本) (64 位)
FileReader
MDN
FileReader 接口允许 Web 应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File 或 Blob 对象指定要读取的文件或数据。
DOMParser
MDN
DOMParser 可以将存储在字符串中的 XML 或 HTML 源代码解析为一个 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>
复制代码
结果
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4