最近干活的时候有个需求,需要将csv文件导入到mysql数据库中,前后端框架用的springboot+Vue,组件用的elementUI,下面将分步骤记录实现过程。

1.导入按钮部分:

<el-button class="filter-item" style="margin-left: 10px;" type="primary" @click="openCsvDialog()" icon="el-icon-plus">
导入
</el-button>

2.按钮点击事件,这里是打开了一个Dialog

openCsvDialog() {
this.file = {};
this.csvVisible = true;
this.csvTitle = '导入CSV文件';
this.$refs.upload.clearFiles();
}

3.Dialog部分:

<el-dialog
:title="csvTitle"
:visible.sync="csvVisible"
width="50%">
<div>
<el-form ref="file" label-width="120px">
<el-form-item label="CSV文件导入:">
<el-upload
class="upload-demo"
ref="upload"
drag
accept=".csv"
action=""
:multiple="false"
:limit="1"
:auto-upload="false"
:on-change="handleChange">
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
<div class="el-upload__tip" slot="tip">只能上传csv文件</div>
</el-upload>
</el-form-item>
</el-form>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="csvVisible = false">取消</el-button>
<el-button type="primary" @click="importCsv">导入</el-button>
</span>
</el-dialog>

说一说Dialog中的各个属性,其中:

class指定了上传的样式;

ref的话指一个引用,例如你到时候可以用this.$refs.upload.submit()来进行手动上传

drag表示是否可以进行文件拖拽

accept表示可以接收的上传文件的类型

action表示你上传文件的地址,这里我不做上传文件的保存,读取到文件流后直接入库,所以我给的空串

:multiple="false"表示不支持多选文件,如果是true的话,表示支持多选文件

:limit="1"表示最大允许上传个数,这里的话是表示最多上传一个,多上传覆盖

:auto-upload="false"表示不支持选择完文件后自动上传,这里要注意的是,当这个属性值为false的时候,你上传前的钩子函数before-upload是不好使的,但是可以用this.$refs.upload.submit()来进行手动上传。

:on-change="handleChange"表示文件状态改变时的钩子,添加文件、上传成功和上传失败时都会被调用,这个钩子很重要,他可以接收两个参数,一个是选择的单个文件,另一个是多选的文件列表,我就是用这个钩子来获取上传文件和手动上传的。

4.handleChange方法:

// 上传文件,获取文件流
handleChange(file) {
this.$refs.upload.clearFiles();
//每次上传前都清空
this.file = {};
//赋值
this.file.file = file.raw;
},

5.点击事件importCsv方法:

async importCsv() {
if(Object.keys(this.file).length != 0){
const res = await this.$store.api.newReq('/xxx/xxxxxx/importcsv').upload(this.file);
if (res.code === 0) {
this.csvVisible = false;
//这里是导入完文件后,重新查询数据库刷新页面
this.getList();
this.$message({
type: 'success',
message: '导入成功',
duration: 1500,
onClose: async () => {
}
})
}
}else{
this.$message.error('上传文件不能为空');
}
}

以上就是elementUI组件用upload来手动导入csv文件的Vue侧的写法,然后在后台就可以拿到文件,读取文件流存入数据库啦!读取csv文件流入库我用的是openCsv来做的,在我的下一篇博客中您也可以找到。

希望这篇文章能真正的帮助到您,解决您的一些迷惑,有问题的小伙伴可以留言交流哦

Vue之使用elementUI的upload上传组件导入csv文件的更多相关文章

  1. 在vue项目中使用element-ui的Upload上传组件

    <el-upload v-else class='ensure ensureButt' :action="importFileUrl" :data="upLoadD ...

  2. 封装Vue Element的upload上传组件

    本来昨天就想分享封装的这个upload组件,结果刚写了两句话,就被边上的同事给偷窥上了,于是在我全神贯注地写分享的时候他就神不知鬼不觉地突然移动到我身边,腆着脸问我在干啥呢.卧槽你妈,当场就把我吓了一 ...

  3. element-ui upload上传组件问题记录

    element-ui upload上传组件遇到的问题

  4. element-ui Upload 上传组件源码分析整理笔记(十四)

    简单写了部分注释,upload-dragger.vue(拖拽上传时显示此组件).upload-list.vue(已上传文件列表)源码暂未添加多少注释,等有空再补充,先记下来... index.vue ...

  5. Element-UI中Upload上传文件前端缓存处理

    Element-UI对于文件上传组件的功能点着重于文件传递到后台处理,所以要求action为必填属性.但是如果需要读取本地文件并在前端直接处理,文件就没有必要传递到后台,比如在本地打开一个JSON文件 ...

  6. 页面中使用多个element-ui upload上传组件时绑定对应元素

    elemet-ui里提供的upload文件上传组件,功能很强大,能满足单独使用的需求,但是有时候会存在多次复用上传组件的需求,如下图的样子,这时候就出现了问题,页面上有多个上传组件时,要怎么操作呢? ...

  7. 解决使用elementUI框架el-upload上传组件时session丢失问题

    在使用elementui框架上传组件的时候,出现session丢失,后端无法获取到sessionid,导致返回状态为未登陆 查看请求头缺少cookie值 上传组件代码: <el-upload c ...

  8. 封装react antd的upload上传组件

    上传文件也是我们在实际开发中常遇到的功能,比如上传产品图片以供更好地宣传我们的产品,上传excel文档以便于更好地展示更多的产品信息,上传zip文件以便于更好地收集一些资料信息等等.至于为何要把上传组 ...

  9. Flash上传组件之SWFUpload文件上传

    一.什么是SWFUpload? SWFUpload是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合Flash与JavaScript技术为WEB开发者提供了一个具有丰富功能继而 ...

  10. ElementUI的Upload上传,配合七牛云储存图片

    七牛云服务器的储存区域 存储区域 地域简称 上传域名 华东 z0 服务器端上传:http(s)://up.qiniup.com 华东 z0 客户端上传: http(s)://upload.qiniup ...

随机推荐

  1. django自带的cache缓存框架使用

    https://docs.djangoproject.com/zh-hans/4.2/topics/cache/#top 主要步骤官网也写得很清楚了,包含怎么区使用. 这里就展示一些配置django- ...

  2. ClickHouse(19)ClickHouse集成Hive表引擎详细解析

    目录 Hive集成表引擎 创建表 使用示例 如何使用HDFS文件系统的本地缓存 查询 ORC 输入格式的Hive 表 在 Hive 中建表 在 ClickHouse 中建表 查询 Parquest 输 ...

  3. Python subprocess 使用(二)

    Python subprocess 使用(二) 本篇继续介绍subprocess的使用. 这里主要添加两个自己在工作过程中常用的两个小命令. 1: 获取顶层activity import subpro ...

  4. dotnet-dump工具使用

    介绍 dotnet-dump 是 .NET Core 官方工具之一,用于生成和分析 .NET Core 进程的转储文件(dump file).它可以帮助开发人员在应用程序发生故障或性能问题时进行故障排 ...

  5. JavaFx之controlsfx8下载(十七)

    JavaFx之controlsfx8下载(十七) controlsfx是JavaFx功能的扩展补充,这里我使用java8,我将源码下载下来并编译好jar,在java8的环境双击运行runSamples ...

  6. ZincSearch轻量级全文搜索引擎入门到

    ZincSearch轻量级全文搜索引擎入门到 Zinc是一个用于对文档进行全文搜索的搜索引擎.它是开源的,内置在 Go 中.Zinc不是从头开始构建索引引擎,而是构建在 bluge 之上,这是一个出色 ...

  7. vue遮罩层

    <template> <div class="hello"> <button @click="toggleModal">打开 ...

  8. IoT与鸿蒙、低代码、生成式AI,引爆技术浪潮——华为云开发者日南京站成功举办

    本文分享自华为云社区<IoT与鸿蒙.低代码.生成式AI,引爆技术浪潮--华为云开发者日南京站成功举办>,作者:华为云社区精选 . 近日,华为云开发者日HDC.Cloud Day南京站成功举 ...

  9. 用GaussDB合理管控数据资源的几点心得

    一.摘要 项目交付中可能会遇到同时包含核心交易(OLTP)和报表分析(OLAP)的混合业务场景,其中报表分析类业务复杂度高,消耗大量系统资源,但实时性要求较低,而核心交易类业务并发较大,多为简单事务处 ...

  10. GaussDB(for Redis)游戏实践:玩家下线行为上报

    本文分享自华为云社区<GaussDB(for Redis) 游戏实践:玩家下线行为上报>,作者:GaussDB 数据库 为保护未成年人的身心健康,2007年国家推出网络游戏防沉迷系统,对未 ...