当前位置: 首页 > news >正文

vue2+element-ui批量导入方法并判断上传的文件是否为xls或xlsx

业务需求:

代码结构:

<el-dialogtitle="批量导入":close-on-click-modal="true"@close="close()":visible="true"width="35%":center="true"><div class="el-dialog-div"><!-- 头部区域布局 --><div class="header_area"><div class="header_word"><p>专家导入</p></div><div class="header_list"><el-buttontype="primary"size="small"icon="el-icon-download"plain@click="downloadTemplate">下载模板</el-button></div></div><el-uploadclass="upload-demo"ref="upload":action="uploadUrl":file-list="fileList":auto-upload="false":headers="{ token: $cookie.get('token') }":multiple="false":show-file-list="true":on-change="handleChange":on-remove="handleRemove":limit="1"><el-buttonslot="trigger"size="small"type="primary"icon="el-icon-plus"plain:disabled="fileList.length>0">专家文件选择</el-button></el-upload></div><span slot="footer" class="dialog-footer"><el-button @click="close()">取消</el-button><el-button type="primary" @click="dataFormSubmit()" :uploading="uploading">确定</el-button></span></el-dialog>

下载模板方法:

// 下载模板downloadTemplate() {// 模板文件的下载链接const templateFileUrl = "/uploads/template.xlsx"; //后端给一个服务器模板链接// 创建一个链接元素const link = document.createElement("a");link.href = templateFileUrl;link.target = "_blank";link.download = "模板.xlsx"; // 下载的文件名link.style.display = "none";// 将链接元素添加到 DOM 中document.body.appendChild(link);// 模拟点击下载链接link.click();// 移除链接元素document.body.removeChild(link);},

提交上传方法:

1.先做类型判断 大小判断 是否上传

// 检查是否选择了文件if (this.fileList.length <= 0) {this.$message.error("请先选择要导入的文件");return;}// 检查文件类型是否是 Excelconst isExcel =this.fileList[0].type === "application/vnd.ms-excel" ||this.fileList[0].type ==="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";if (!isExcel) {this.$message.error("仅支持xls、xlsx格式的文件!");return;}// 检查文件大小是否符合限制const isSizeValid = this.fileList[0].size / 1024 / 1024 < 10;if (!isSizeValid) {this.$message.error("文件大小不能超过10MB");return;}

2.提交后端方法

this.uploading = true;// 创建 FormData 对象,用于将文件作为表单字段上传const formData = new FormData();formData.append("file", this.fileList[0].raw);// 发送文件上传请求this.$http({url: this.$http.adornUrl("/professorInfo/importProfessorInfo","member"),method: "post",headers: { "Content-Type": "multipart/form-data" },data: formData,}).then(({ data }) => {console.log(data, "000000000");// 处理上传成功的逻辑if (data && data.code === "0") {// 上传成功的处理逻辑this.$message({message: `成功导入${data.data.successNum}条数据`,type: "success",duration: 2000,onClose: () => {this.$emit("refresh-data-list");this.close();},});} else {// 上传失败的处理逻辑this.$message.error(data.msg);// 其他逻辑处理...}this.uploading = false;this.$emit("refresh-data-list");this.close();}).catch((error) => {// 处理请求异常的逻辑this.$message.error(data.msg);console.error(error);// 其他逻辑处理...this.uploading = false;});

3.完整代码

dataFormSubmit() {// 检查是否选择了文件if (this.fileList.length <= 0) {this.$message.error("请先选择要导入的文件");return;}// 检查文件类型是否是 Excelconst isExcel =this.fileList[0].type === "application/vnd.ms-excel" ||this.fileList[0].type ==="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";if (!isExcel) {this.$message.error("仅支持xls、xlsx格式的文件!");return;}// 检查文件大小是否符合限制const isSizeValid = this.fileList[0].size / 1024 / 1024 < 10;if (!isSizeValid) {this.$message.error("文件大小不能超过10MB");return;}this.uploading = true;// 创建 FormData 对象,用于将文件作为表单字段上传const formData = new FormData();formData.append("file", this.fileList[0].raw);// 发送文件上传请求this.$http({url: this.$http.adornUrl("/professorInfo/importProfessorInfo","member"),method: "post",headers: { "Content-Type": "multipart/form-data" },data: formData,}).then(({ data }) => {console.log(data, "000000000");// 处理上传成功的逻辑if (data && data.code === "0") {// 上传成功的处理逻辑this.$message({message: `成功导入${data.data.successNum}条数据`,type: "success",duration: 2000,onClose: () => {this.$emit("refresh-data-list");this.close();},});} else {// 上传失败的处理逻辑this.$message.error(data.msg);// 其他逻辑处理...}this.uploading = false;this.$emit("refresh-data-list");this.close();}).catch((error) => {// 处理请求异常的逻辑this.$message.error(data.msg);console.error(error);// 其他逻辑处理...this.uploading = false;});},

相关文章:

vue2+element-ui批量导入方法并判断上传的文件是否为xls或xlsx

业务需求: 代码结构: <el-dialogtitle"批量导入":close-on-click-modal"true"close"close()":visible"true"width"35%":center"true"><div class"el-dialog-div"><!-- 头部区域布局 -…...

【FPGA】通俗理解从VGA显示到HDMI显示

注&#xff1a;大部分参考内容来自“征途Pro《FPGA Verilog开发实战指南——基于Altera EP4CE10》2021.7.10&#xff08;上&#xff09;” 贴个下载地址&#xff1a; 野火FPGA-Altera-EP4CE10征途开发板_核心板 — 野火产品资料下载中心 文档 hdmi显示器驱动设计与验证 — …...

【SpringMVC】参数传递与用户请求和响应

目录 一、Postman 工具使用 1.1 Postman安装 1.2 Postman的使用 1.2.1 创建WorkSpace工作空间 1.2.2 创建请求 二、参数传递 2.1 添加 Slf4j 依赖 2.2 普通传参 知识点1&#xff1a;RequestMapping 知识点2&#xff1a;RequestParam 2.3 路径传参 知识点3&#xff1…...

Android图形-Hardware Composer HAL

目录 一、引言 二、概览 三、实现HWC 3.1 为什么是HWC&#xff1f; 3.2 HWC的支持需求 3.3 HWC的实现思路 3.4 HWC的基元 3.5 HIDL接口 3.6 函数指针 3.7 图层和屏幕句柄 3.8 屏幕合成操作 3.9 多个屏幕 3.10 虚拟屏幕合成 3.10.1 模式 3.10.2 输出格式 3.11 同…...

P1093 [NOIP2007 普及组] 奖学金

题目描述 某小学最近得到了一笔赞助&#xff0c;打算拿出其中一部分为学习成绩优秀的前 5 5 5 名学生发奖学金。期末&#xff0c;每个学生都有 3 3 3 门课的成绩:语文、数学、英语。先按总分从高到低排序&#xff0c;如果两个同学总分相同&#xff0c;再按语文成绩从高到低排…...

C#模拟PLC设备运行

涉及&#xff1a;控件数据绑定&#xff0c;动画效果 using System; using System.Windows.Forms;namespace PLCUI {public partial class MainForm : Form{ public MainForm(){InitializeComponent();}private void MainForm_Load(object sender, EventArgs e){// 方式2&#x…...

LeetCode 每日一题 2023/8/28-2023/9/3

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 8/28 57. 插入区间8/29 823. 带因子的二叉树8/30 1654. 到家的最少跳跃次数8/31 1761. 一个图中连通三元组的最小度数9/1 2240. 买钢笔和铅笔的方案数9/2 2511. 最多可以摧…...

Python Tkinter Multiple Windows 教程

一、说明 在这个Python Tkinter教程中&#xff0c;我们将学习如何在Python Tkinter中创建多个窗口&#xff0c;我们还将介绍与多个窗口相关的不同示例。而且&#xff0c;我们将介绍这些主题。 Python Tkinter multiple windows使用多个窗口的 Python Tkinter 用户注册Python Tk…...

【Arduino24】8*8点阵实验

硬件准备 8*8点阵&#xff1a;1个 旋钮电位器&#xff1a;1个 面包板&#xff1a;1块 杜邦线&#xff1a;若干 硬件连线 软件程序 //定义引脚 #define xKnob_pin A0 //x轴旋钮的引脚 #define yKnob_pin A1 //y轴旋钮的引脚 const int row_pin[8] { 6, 11, 10, 3, 17, 4…...

2023年09月数据库流行度最新排名

点击查看最新数据库流行度最新排名&#xff08;每月更新&#xff09; 2023年09月数据库流行度最新排名 TOP DB顶级数据库索引是通过分析在谷歌上搜索数据库名称的频率来创建的 一个数据库被搜索的次数越多&#xff0c;这个数据库就被认为越受欢迎。这是一个领先指标。原始数…...

jenkins快速跑通helloworld任务

jenkins新建helloworld示例 左上角“新建任务” 输入名称&#xff0c;选择第一个创建&#xff1a; 可以选择众多执行脚本&#xff0c;这里选择shell&#xff1a; 随后弹出一个窗口&#xff0c;将下面脚本填入&#xff1a; #!/bin/bashecho start... for i in {1..10}doecho $i…...

win10中安装ros

参考&#xff1a; Windows 10上安装ROS noetic平台_windows ros noetic_高精度计算机视觉的博客-CSDN博客...

问道管理:光刻胶概念再度活跃,广信材料两连板,蓝英装备等涨停

光刻胶概念6日盘中再度活泼&#xff0c;截至发稿&#xff0c;扬帆新材、广信资料、蓝英配备“20cm”涨停&#xff0c;盛剑环境亦涨停&#xff0c;高盟新材涨超9%&#xff0c;同益股份、容大感光涨超5%。 值得注意的是&#xff0c;广信资料已连续两个交易日涨停。公司近来在成绩…...

InstructPix2Pix(CVPR2023)-图像编辑论文解读

文章目录 1.摘要2.背景3.算法3.1 生成多模态训练集3.1.1生成指令及成对caption3.1.2 依据成对的caption生成成对的图像 3.2 InstructPix2Pix 4.实验结果4.1基线比较4.2消融实验 5.结论 论文&#xff1a; 《InstructPix2Pix: Learning to Follow Image Editing Instructions》 …...

基于神经网络结合紫外差分光谱的二氧化硫浓度定量预测

基于神经网络结合紫外差分光谱的二氧化硫浓度定量预测 前言一、代码运行1. 解压数据2. 导包3. 读取数据4. 构建网络5. 设置优化器6. 模型训练7. 可视化loss8. 模型验证 二、结果展示三、总结作者简介 前言 二氧化硫&#xff08;SO2&#xff09;是一种常见的环境污染物&#xff…...

一个新工具 nolyfill

名字的意思&#xff0c; 我自己的理解 no(po)lyfill 正如它的名字, 不要再用补丁了, 当然这里说的是过时的补丁。 polyfill 是补丁的意思 为什么要用这个插件 文档原文: 当您通过安装最新的 Node.js LTS 来接受最新的功能和安全修复时&#xff0c;像eslint-plugin-import、…...

vue的第2篇 开发环境vscode的安装以及创建项目空间

一 环境的搭建 1.1常见前端开发ide 1.2 安装vs.code 1.下载地址&#xff1a;Visual Studio Code - Code Editing. Redefined 2.进行安装 1.2.1 vscode的中文插件安装 1.在搜索框输入“chinese” 2.安装完成重启&#xff0c;如下变成中文 1.2.2 修改工作区的颜色 选中[浅色]…...

Java之包装类的详细解析

包装类 5.1 概述 Java提供了两个类型系统&#xff0c;基本类型与引用类型&#xff0c;使用基本类型在于效率&#xff0c;然而很多情况&#xff0c;会创建对象使用&#xff0c;因为对象可以做更多的功能&#xff0c;如果想要我们的基本类型像对象一样操作&#xff0c;就可以使…...

SpringBoot项目防止接口重复提交(简单拦截器实现方案)

基于SpringBoot框架来开发业务后台项目时&#xff0c;接口重复提交是一个常见的问题。为了避免这个问题&#xff0c;我们可以通过自定义拦截器实现一个后台拦截接口重复提交的功能&#xff0c;本文将介绍如何使用基于SpringBoot实现这个功能。 首先&#xff0c;我们需要引入一…...

C语言 数据结构与算法 I

C语言-数据结构与算法 C语言基础 因为之前写算法都是用C&#xff0c;也有了些C基础&#xff0c;变量常量数据类型就跳过去吧。 首先是环境&#xff0c;学C时候用Clion&#xff0c;C语言也用它写吧~ 新建项目&#xff0c;选C执行文件&#xff0c;语言标准。。。就先默认C99吧…...

泉盛UV-K5/K6固件自定义:解锁专业对讲机功能的终极指南

泉盛UV-K5/K6固件自定义&#xff1a;解锁专业对讲机功能的终极指南 【免费下载链接】uv-k5-firmware-custom 全功能泉盛UV-K5/K6固件 Quansheng UV-K5/K6 Firmware 项目地址: https://gitcode.com/gh_mirrors/uvk5f/uv-k5-firmware-custom 你是否曾想过&#xff0c;一台…...

探索marked:高性能Markdown解析的Web开发工具解决方案

探索marked&#xff1a;高性能Markdown解析的Web开发工具解决方案 【免费下载链接】marked A markdown parser and compiler. Built for speed. 项目地址: https://gitcode.com/gh_mirrors/ma/marked 在现代Web开发中&#xff0c;Markdown解析作为内容呈现的关键环节&am…...

Android BSP 开发修改轨迹

一、 Android BSP 整体开发修改轨迹图Android BSP 软件架构 │ ├── 【第1层&#xff1a;Bootloader 引导层】 │ ├── 1.1 一级引导程序&#xff08;Primary Bootloader&#xff09; │ │ ├── ROM Code&#xff08;芯片固化&#xff09; │ │ └── SPL /…...

LOSEHU固件:解锁泉盛UV-K5/K6对讲机专业潜能的终极解决方案

LOSEHU固件&#xff1a;解锁泉盛UV-K5/K6对讲机专业潜能的终极解决方案 【免费下载链接】uv-k5-firmware-custom 全功能泉盛UV-K5/K6固件 Quansheng UV-K5/K6 Firmware 项目地址: https://gitcode.com/gh_mirrors/uvk5f/uv-k5-firmware-custom 还在为对讲机原厂固件的功…...

从单核到16核:用程序员思维图解CPU参数(附性能测试代码)

从单核到16核&#xff1a;用程序员思维图解CPU参数&#xff08;附性能测试代码&#xff09; 在开发高性能应用时&#xff0c;CPU的选择往往直接决定了程序的执行效率。但面对琳琅满目的参数——主频、核心数、线程数、缓存大小、架构代际——开发者该如何做出明智决策&#xff…...

golang如何实现零知识证明基础_golang零知识证明基础实现教程

Go 不内置零知识证明能力&#xff0c;需依赖第三方库&#xff1b;主流ZKP工具链绑定Rust/C/TS&#xff0c;Go生态缺乏生产级原生实现&#xff1b;crypto包仅提供基础原语&#xff0c;无法支撑ZKP所需多项式承诺、配对运算等高级密码操作。Go 本身不内置零知识证明&#xff08;Z…...

一个insert()调用背后的921行C++——OpenCV Delaunay三角剖分源码全解析

看这段代码: Subdiv2D subdiv(Rect(0, 0, 600, 600)); subdiv.insert(Point2f...

Serverless时代Java开发者必学的3种函数封装范式:POJO/Function/Consumer,第2种正在被淘汰!

第一章&#xff1a;Serverless时代Java函数计算的演进与定位Serverless 架构正深刻重塑 Java 应用的部署范式。传统 Java 应用依赖长生命周期的 JVM 进程与复杂中间件栈&#xff0c;而函数计算&#xff08;Function-as-a-Service, FaaS&#xff09;将执行单元收敛为无状态、事件…...

Phi-4-mini-reasoning逻辑推理效果展示:图灵测试级数学对话与错误自检能力

Phi-4-mini-reasoning逻辑推理效果展示&#xff1a;图灵测试级数学对话与错误自检能力 1. 模型简介 Phi-4-mini-reasoning 是一个基于合成数据构建的轻量级开源模型&#xff0c;专注于高质量、密集推理的数据处理。作为Phi-4模型家族的一员&#xff0c;它经过专门微调以提升数…...

从零到一:手把手教你用CANoe和Python脚本实现UDS诊断自动化测试(附完整代码)

从零到一&#xff1a;手把手教你用CANoe和Python脚本实现UDS诊断自动化测试&#xff08;附完整代码&#xff09; 在汽车电子测试领域&#xff0c;UDS&#xff08;Unified Diagnostic Services&#xff09;诊断协议的自动化测试已经成为提升开发效率的关键环节。传统的手动测试方…...