csv文件的上传、解析和获得最后的数据

前端和node端解析、读取csv文件的区别

1、前端

  • 运行环境为浏览器,受到浏览器安全策略的限制,例如跨域请求、文件访问权限等。
  • 对于大型CSV文件的处理可能会受到性能瓶颈的影响。
  • 前端运行在用户的浏览器中,受到浏览器安全策略的限制,无法直接访问用户文件系统以进行写入操作

2、node端

  • 运行环境为服务器端的Node.js,具有更高的权限和更广泛的文件系统访问能力。
  • 上传的文件通常存储在服务器的临时目录或指定目录中,然后使用Node.js的文件系统模块或第三方库进行读取和解析
  • 可以使用流式处理(streaming)技术来逐行读取、解析、CSV文件内容,还可以写入、删除某个文件,权限更丰富。

需求:前端上传某个csv文件,并读取csv文件的数据(不需要写入,读取即可)

第三方库:papaparse

<template><div class="main"  ><input  class="upload" type="file" @change="onFileChange" accept=".csv" /></div>
</template><script lang="ts" setup>
import Papa from 'papaparse';
const csvData = ref([]); //读取出来的csv文件
const csvHeaders = ref([]);//csv文件头部
/*** 解析csv文件* @param event */const onFileChange = (event: Event) => {const fileInput = event.target as HTMLInputElement;const file = fileInput.files?.item(0);if (file && file.type === 'text/csv') {const reader = new FileReader();reader.onload = (e) => {const result = (e.target as FileReader).result as string;Papa.parse(result, {header: true,complete: (parsedData) => {csvHeaders.value = parsedData.meta.fields;csvData.value = parsedData.data;//处理csv文件的数据processPhoneId(csvData.value)},error: (err) => {console.error('解析文件错误', err);},});};reader.readAsText(file);} else {alert('请上传正确的CSV格式文件!');}
};let totalPhoneIds=ref([]) //处理csv文件后得到的所有phoneId,会直接传递给后端
/*** 处理csv数据,传递给后端* @param data 传入的csvData文件*/
function processPhoneId(data) {// 获取csv文件中所有的phoneId,组成数据,同时过滤空字符串totalPhoneIds.value = data.map(item => item.phoneId) .filter(phoneId => phoneId.trim() !== ''); 
}</script>

上传的csv文件格式如下  phoneId为表头

 

初步得到的csvData数据如下: 


需要 processPhoneId方法 过滤空字符串,然后将有内容的数据组成数组,进行接下来的操作

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

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

相关文章

在 Windows Server 2022 Datacenter 上配置 MySQL 8.0 的主从复制

在 Windows Server 2022 Datacenter 上配置 MySQL 8.0 的主从复制。以下是详细的步骤&#xff1a; 1. 使用 root 用户登录 确保你以 root 用户登录到 MySQL 服务器。 mysql -u root -p输入你的 root 密码后进入 MySQL 命令行界面。 2. 配置主服务器 (master) 2.1 编辑 my.…

Git忽略除了指定文件以外的所有文件

前言&#xff1a;最近发现vs很多杂七杂八的文件都被传到gitee上了&#xff0c;但是我本意只是想把一些主要的文件如 .cpp文件传到gitee&#xff0c;因此考虑到了.gitignore文件的使用。 .gitignore文件的作用 .gitignore是一个特殊的文件&#xff0c;用于告诉Git哪些文件或目录…

Python学习------第十五天

1.异常的捕获方式&#xff1a; #基本捕获语法 try:f open("D:/abc.txt","r",encoding"UTF-8") except:print("出现异常了&#xff0c;因为文件不存在&#xff0c;我将open模式改为w模式去打开")f open("D:/abc.txt", &quo…

Android 俩个主题的不同之处 “Theme.AppCompat vs android:Theme.Material.Light.NoActionBar”

这两种主题继承关系有明显的不同&#xff0c;具体区别如下&#xff1a; Theme.AppCompat vs android:Theme.Material.Light.NoActionBar Theme.AppCompat 是 AppCompat 支持库提供的主题&#xff0c;目的是提供向后兼容的支持&#xff0c;适用于较早版本的 Android&#xff08…

什么是java方法

在Java编程语言中&#xff0c;方法&#xff08;Method&#xff09;是类&#xff08;Class&#xff09;中的一个函数&#xff0c;用于执行特定的任务或计算。方法封装了一段代码&#xff0c;使其可以重复调用&#xff0c;从而提高代码的可读性和可维护性。方法的基本结构包括方法…

THENA大涨将对整个DeFi市场产生怎样的影响?

引言 近期&#xff0c;区块链行业的一个热门项目——THENA&#xff08;THE&#xff09;代币&#xff0c;在短时间内吸引了大量投资者的目光。THE代币的价格在短短几个月内经历了显著的上涨&#xff0c;引发了市场对其背后机制的浓厚兴趣。而在THENA生态系统的成功背后&#xf…

Kubernetes命名空间详解

目录 目标 版本 官网 概述 namespace&#xff08;命名空间、名称空间&#xff09; 注意事项 基本命令 查看namespace列表 查看所有Pod的namespace 查看单个Pod的namespace 查看同一个namespace下的所有Pod 查看单个namespace资源配额 查看单个Pod详情 查看所有na…

【开源】A059-基于SpringBoot的社区养老服务系统的设计与实现

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看项目链接获取⬇️&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600个选题ex…

MySQL(三)

1、内置函数 1.1、日期函数 current_date()当前的日期current_time()当前的时间current_timestamp()当前的时间戳,即日期+时间date(datetime)返回参数中的日期部分date_add(date ,interval x date_type)在date的基础上增加x时间,date_type的单位可以是year、minute、second、…

C#加速Bitmap存图

如果希望大幅提高图像保存速度&#xff0c;特别是在处理非常大的图像时&#xff0c;可以尝试以下更直接、更高效的方法&#xff1a; 1. 避免使用 Bitmap 类的 Save 方法 Bitmap.Save 方法的速度受限于 GDI 库的操作&#xff0c;尤其是对于非常大的图像&#xff0c;它可能会经历…

【AI系统】算子开发编程语言 Ascend C

算子开发编程语言 Ascend C 本节将深入探讨昇腾算子开发编程语言 Ascend C&#xff0c;这是一种专为昇腾 AI 处理器算子开发设计的编程语言&#xff0c;它原生支持 C 和 C标准规范&#xff0c;最大化匹配用户的开发习惯。Ascend C 通过多层接口抽象、自动并行计算、孪生调试等…

Python基于大数据的微博的舆情分析,机器学习的微博情感分析系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

WPF+LibVLC开发播放器-LibVLC播放控制

接上一篇&#xff1a; LibVLC在C#中的使用 实现LibVLC播放器播放控制 界面 界面上添加一个Button按钮用于控制播放 <ButtonGrid.Row"1"Width"88"Height"24"Margin"10,0,0,0"HorizontalAlignment"Left"VerticalAlignme…

【设计模式系列】中介者模式(十八)

一、什么是中介者模式 中介者模式&#xff08;Mediator Pattern&#xff09;是一种行为型设计模式&#xff0c;其核心思想是通过一个中介者对象来封装一系列对象之间的交互&#xff0c;使这些对象不需要相互显式引用。中介者模式提供了一个中介层&#xff0c;用以协调各个对象…

18-1_需求调研记录

1 一轮系统部署的硬件环境需求调研记录 项目名称 不动产统一登记信息系统 调研时间 调研地点 区各市政务服务大厅 调研对象 全区各不动产登记事务中心 系统 序号 新增需求或问题 是否实现 实现方案 硬件环境调研 1 不动产统一登记信息系…

【AI系统】Ascend C 编程范式

Ascend C 编程范式 AI 的发展日新月异&#xff0c;AI 系统相关软件的更新迭代也是应接不暇&#xff0c;作为一本讲授理论的作品&#xff0c;我们将尽可能地讨论编程范式背后的原理和思考&#xff0c;而少体现代码实现&#xff0c;以期让读者理解 Ascend C 为何这样设计&#x…

【Linux】重定向、管道符、通配符、转义字符、环境变量

声明&#xff1a;以下内容均学习自《Linux就该这么学》一书。 1、输入输出重定向 输入重定向&#xff1a; 指把文件导入到命令中&#xff1b; 标准输入重定向STDIN 文件描述符为0。默认从键盘输入&#xff0c;也可以从其他文件或命令中输入。 输入重定向符号及作用 命令 &…

是什么阻断了kafka与zk的链接?

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 问题描述&#xff1a; 前几天部署一套环境&#xff0c;先把zk集群起来了&#xff0c;之后第二天在启动kafka的时候&#xff0c;…

CentOS 二进制安装部署MongoDB 4.0

一、安装MongoDB 1. 下载 MongoDB 二进制文件 前往 MongoDB 官方下载页面(https://www.mongodb.com/try/download/community) 选择对应版本的 tar 包。 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.28.tgz 2. 解压并移动至目标目录 解压文件&#xff…

【数据结构】【线性表】特殊的线性表-字符串

目录 字符串的基本概念 字符串的三要素 字符串的基本概念 串的编码 串的实现及基本运算 顺序串的实现 串的静态数组实现 串的动态数组的实现 顺序存储的四种方案 链式串的实现 基本运算 方案三 方案一 字符串的基本概念 数据结构千千万&#xff0c…