Vue之使用elementUI的upload上传组件导入csv文件
最近干活的时候有个需求,需要将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文件的更多相关文章
- 在vue项目中使用element-ui的Upload上传组件
<el-upload v-else class='ensure ensureButt' :action="importFileUrl" :data="upLoadD ...
- 封装Vue Element的upload上传组件
本来昨天就想分享封装的这个upload组件,结果刚写了两句话,就被边上的同事给偷窥上了,于是在我全神贯注地写分享的时候他就神不知鬼不觉地突然移动到我身边,腆着脸问我在干啥呢.卧槽你妈,当场就把我吓了一 ...
- element-ui upload上传组件问题记录
element-ui upload上传组件遇到的问题
- element-ui Upload 上传组件源码分析整理笔记(十四)
简单写了部分注释,upload-dragger.vue(拖拽上传时显示此组件).upload-list.vue(已上传文件列表)源码暂未添加多少注释,等有空再补充,先记下来... index.vue ...
- Element-UI中Upload上传文件前端缓存处理
Element-UI对于文件上传组件的功能点着重于文件传递到后台处理,所以要求action为必填属性.但是如果需要读取本地文件并在前端直接处理,文件就没有必要传递到后台,比如在本地打开一个JSON文件 ...
- 页面中使用多个element-ui upload上传组件时绑定对应元素
elemet-ui里提供的upload文件上传组件,功能很强大,能满足单独使用的需求,但是有时候会存在多次复用上传组件的需求,如下图的样子,这时候就出现了问题,页面上有多个上传组件时,要怎么操作呢? ...
- 解决使用elementUI框架el-upload上传组件时session丢失问题
在使用elementui框架上传组件的时候,出现session丢失,后端无法获取到sessionid,导致返回状态为未登陆 查看请求头缺少cookie值 上传组件代码: <el-upload c ...
- 封装react antd的upload上传组件
上传文件也是我们在实际开发中常遇到的功能,比如上传产品图片以供更好地宣传我们的产品,上传excel文档以便于更好地展示更多的产品信息,上传zip文件以便于更好地收集一些资料信息等等.至于为何要把上传组 ...
- Flash上传组件之SWFUpload文件上传
一.什么是SWFUpload? SWFUpload是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合Flash与JavaScript技术为WEB开发者提供了一个具有丰富功能继而 ...
- ElementUI的Upload上传,配合七牛云储存图片
七牛云服务器的储存区域 存储区域 地域简称 上传域名 华东 z0 服务器端上传:http(s)://up.qiniup.com 华东 z0 客户端上传: http(s)://upload.qiniup ...
随机推荐
- Selenium-无头模式headless
无头模式适合的场景: 部署到没有gui界面的服务器,比如linux 开发环境测试完全没问题后可以使用无头模式,提高selenium速度. # 使用headless无界面浏览器模式 chrome_opt ...
- 告别复杂排版:Markdown语法指南
导语:Markdown作为一种轻量级的标记语言,以其简洁.易学的语法和强大的兼容性赢得了广泛的应用.本文将为您详细介绍Markdown的起源.基本语法及其在写作.博客.项目管理等场景的应用,带您领略这 ...
- 文心一言 VS 讯飞星火 VS chatgpt (40)-- 算法导论5.4 4题
四.一次聚会需要邀请多少人,才能让其中 3 人的生日很可能相同? 文心一言: 为了解决这个问题,我们需要先计算出所有可能的生日组合数,然后计算出其中生日相同的组合数. 已知需要邀请的人数为:23人 根 ...
- Llama2-Chinese项目:8-TRL资料整理
TRL(Transformer Reinforcement Learning)是一个使用强化学习来训练Transformer语言模型和Stable Diffusion模型的Python类库工具集, ...
- C++篇:第一章_变量和常量_知识点大全
C++篇为本人学C++时所做笔记(特别是疑难杂点),全是硬货,虽然看着枯燥但会让你收益颇丰,可用作学习C++的一大利器 注意:C++篇为本人手动将Word文档修改成Markdown格式(因为网上修改的 ...
- 详解NLP和时序预测的相似性【附赠AAAI21最佳论文INFORMER的详细解析】
摘要:本文主要分析自然语言处理和时序预测的相似性,并介绍Informer的创新点. 前言 时序预测模型无外乎RNN(LSTM, GRU)以及现在非常火的Transformer.这些时序神经网络模型的主 ...
- vue2升级vue3:getCurrentInstance—Composition api/hooks中如何获取$el
在vue2中,我们进程看到 this.$el 操作.但是在vue3 如何获取组件的当前 dom 元素呢? 可以利用 getCurrentInstance getCurrentInstance Vue ...
- TS数据类型:从C++/Java/Python到TS看元组tuple—元组的来龙去脉
在C++有Java这种强类型语言中,常用的Array.List.Set ,在集合中只能是一种类型(可以复习下:<再谈Java数据结构-分析底层实现与应用注意事项). int data[] = n ...
- 企业新道路怎么走?火山引擎AB测试助力决策选择
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 乐刻是一家创立8年的企业,除了消费者熟悉的乐刻健身房可办月卡.24小时营业等,其还有比外界了解更多元的业务.目 ...
- 创建一个科学决策必备的A/B实验,都需要哪些准备?——火山引擎 DataTester 使用指南
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流 DataTester 是火山引擎数智平台旗下产品,能基于先进的底层算法,提供科学分流能力和智能的统计引擎,支持多种复 ...