前端读取文件当文件选择相同文件名的文件,内容不会变化

news/2024/7/10 0:23:36 标签: 前端, javascript, 前端框架, 开发语言, vue

前端读取文件当文件选择相同文件名的文件,内容不会变化

今天遇到个奇怪的bug,使用打开文件,并选择文件时,正常情况会读取文件信息。

但是如果先选择相同的文件名,则内容不会发生变化。

先说结论

只要不使用事件中event.target.files[0]event事件即可。

// 前端读取文件当文件选择相同文件名的文件,内容不会变化

// 问题描述:当选择相同文件名的文件时,内容不会发生变化。

// 解决方案:避免使用 event.target.files[0],直接读取 fileInput.value.files[0]。

// 示例代码:

const fileInput = document.getElementById("fileInput");

fileInput.addEventListener('change', () => {
    const file = fileInput.files[0];
    
    if (file) {
        const reader = new FileReader();
        reader.onload = (e) => {
            const text = e.target.result;
            store.markdownText = text;
        };

        reader.readAsText(file);
    }
});

原因分析

因为我们是用的方法使用的是change事件意思为,当文件发生改变的时候才会触发这个事件,于是如果文件是之前的文件那么event中的内容则不会发生变化。

vue">const handelDocumentImport = () => {
	fileInput.value.click();

	fileInput.value.addEventListener('change', (event: any) => {
		// 不能使用
		// event.target.files[0];
		const file = fileInput.value.files[0];

		if (file) {
			const reader = new FileReader();
			reader.onload = (e: any) => {
				const text = e.target.result;
				store.markdownText = text;
			};

			reader.readAsText(file);
		}
	});
};

解决方式

先定义变量用于存储文件inputfile中的内容,之后每次文件点击修改时都将内容存储到这个变量中

之后只需要读取这个变量的files即可

const fileInput = document.getElementById("fileInput");

fileInput.value.addEventListener('change', () => {
    const file = fileInput.value.files[0];
    
    if (file) {
    const reader = new FileReader();
    reader.onload = (e: any) => {
        const text = e.target.result;
        store.markdownText = text;
    };

    reader.readAsText(file);
});

http://www.niftyadmin.cn/n/5159142.html

相关文章

【Linux】进程管理命令,了解运维的五大性能监测

目录 一、程序与进程 1、程序是什么? 2、进程是什么?线程是什么?服务是什么? 3、进程的特点 4、进程使用内存的问题 二、运维相关命令学习 命令① ps 静态显示系统的进程 第一种静态查看进程信息:ps aux 第二…

Linux串口断帧和连帧处理

报文格式: 字段长度(字节)说明STX 1开始控制字符 0x02数据长度2传输时需要转换成INTEL序(高字节在前)数据体部分长度。最大允许值为:4096数据体不定由数据长度决定校验字节1校验字节是报文中除通信控制字符之外所有数据的…

设计模式—结构型模式之桥接模式

设计模式—结构型模式之桥接模式 将抽象与实现解耦,使两者都可以独立变化。 在现实生活中,某些类具有两个或多个维度的变化,如图形既可按形状分,又可按颜色分。如何设计类似于 Photoshop 这样的软件,能画不同形状和不…

OpenAI首席科学家:ChatGPT已经出现意识,人类未来将与AI融合

OpenAI首席科学家在最近的专访中抛出了很多惊人言论。在他看来,ChatGPT背后的神经网络已经产生了意识,而且未来人类会与人工智能融合起来,出现新的形态。而他现在工作的重点,已经不是去创建那个必然会出现的通用人工智能&#xff…

php实现钉钉机器人推送消息和图片内容(完整版)

先来看下实现效果: 代码如下: function send_dingtalk_markdown($webhook , $title , $message "", $atMobiles [], $atUserIds []) {$data ["msgtype" > "markdown","markdown" > ["title" > $title,&quo…

扰动算法(哈希函数)

1. 概念 哈希函数的扰动算法是一种用于改善哈希值均匀性的技术。这种算法通常用于对输入的原始哈希码进行处理,以消除潜在的模式、增加随机性,并确保哈希值在哈希表中更均匀地分布。 常见的扰动算法包括: 位运算: 位运算通常用…

Git介绍及使用

目录 一、Git 的基本概念 1. 仓库(Repository): 仓库是存储代码的地方。可以通过 命令将本地文件夹初始化为 Git 仓库,并使用 命令从远程仓库克隆到本地 2. 分支(Branch): 分支是指从主分支上创建出来的一个分支&…

C/C++图形库

Easy Graphics Engine EGE(Easy Graphics Engine),是windows下的简易绘图库,是一个类似BGI(graphics.h)的面向C/C语言新手的图形库,它的目标也是为了替代TC的BGI库而存在。 网址 EasyX EasyX Graphics Library 是针…