首先来说前端上传表格,然后利用纯前端技术进行解析表格的办法

详细步骤----请点击这里

接下来来说上传发送给后端的代码实现

html


<input ref="myInput" type="file" class="my_input" :multiple="myMultiple" style="display:none;" @change="importExcel">
<el-button type="primary" style="width:150px;" :disabled="item.updisabled" size="small" @click="myOpen()">上傳</el-button>

script

import myComValid from '../co-assets/com-valid.js'
import myCom from '../co-assets/com-fun' // 这里只有个弹框函数,就不放了
import Request from '../co-assets/request.js' // 这个是请求函数,和其他的AXIOS一样,只不过稍微封装了一下下,可以改为原来的axios请求方式 // 数据
myMultiple: true

fun


// 方法
myOpen() {
setTimeout(() => {
this.$refs.myInput.click()
}, 500)
}
/**
* 導入
*/
async importExcel(e) {
// console.log('上传了')
this.formData[this.currentFlag]['fileName'] = '正在上传,请稍后...'
this.loading = true
this.loadingTest = '正在上传文件,请稍后...'
const files = e.target.files
if (files.length <= 0) {
return false
} else if (files.length > 2) {
myCom.alert('上传数量有误(正确数量为1-2个),请重新选择文件!')
this.loading = false
return false
} else {
Object.values(files).every(_ => {
// 循环检查所有文件是否都是xlsx
if (!/\.(xlsx)$/.test(_.name.toLowerCase()) || myComValid.validNoTest(_.name)) {
myCom.alert('請重新上傳,文件必须为xlsx格式且文件名不可包含汉字!')
this.loading = false
return false
}
})
}
const url = myUrl +'/uploadfile'
const myformdataFile = new FormData()
if (e.target.files.length > 1) {
myformdataFile.append('file', e.target.files[0])
myformdataFile.append('file', e.target.files[1])
} else {
myformdataFile.append('file', e.target.files[0])
}
if (this.currentFlag === 'header') {
myformdataFile.append('files', this.filename)
}
myformdataFile.append('actiontime', this.topForm.version.value)
try {
const res = await Request.httpRes(
'post',
url,
myformdataFile,
false,
'Success!',
'上傳文件失敗,請重新上傳!'
)
if (res && res.status === 'Success') {
res.msg && this.$message.success(res.msg)
} else {
res.msg && this.$message.error(res.msg)
this.setErrorUpload(res)
}
} catch (err) {
this.$message.error('執行操作失敗,請重試!')
this.setErrorUpload()
}
var input = this.$refs.myInput
input.value = ''
},
// 導入

下面是正则验证函数

com-valid.js

export default {
/**
* 验证IP
* @param {String} ip
*/
validIp(ip) {
const reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/
return reg.test(ip)
},
/**
* 检测是否包含文字
* @param {String} str
*/
validNoTest(str) {
const reg = /[\u4e00-\u9fa5]+/g
return reg.test(str)
},
/**
* 检测是否包含文字或者空格
* @param {String} str
*/
validNoTest1(str) {
const reg = /[\u4e00-\u9fa5\s]+/g
return reg.test(str)
}
}

VUE上传表格文件发送后端,后端解析以及上传文件,前端进行解析的实现方法的更多相关文章

  1. vue + element ui 表格自定义表头,提供线上demo

    前言:工作中用到 vue+element ui 的前端框架,需要使用自定义表头,需要使用 re.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9710826.h ...

  2. 使用elementUI的时候,使用Upload 上传的时候,使用 list-type 属性来设置文件列表的样式,before-upload方法失效

    最近在做项目的时候,使用elementUI的时候,使用Upload 上传的时候,before-upload方法失效. 情况下:使用 list-type 属性来设置文件列表的样式. 最终的优化之后:(演 ...

  3. DEX文件解析---2、Dex文件checksum(校验和)解析

    一.checksum介绍     checksum(校验和)是DEX位于文件头部的一个信息,用来判断DEX文件是否损坏或者被篡改,它位于头部的0x08偏移地址处,占用4个字节,采用小端序存储.     ...

  4. DEX文件解析--7、类及其类数据解析(完结篇)

    一.前言    前置技能链接:       DEX文件解析---1.dex文件头解析       DEX文件解析---2.Dex文件checksum(校验和)解析       DEX文件解析--3.d ...

  5. DEX文件解析--4、dex类的类型解析

    一.前言   前几篇系列文章链接:     DEX文件解析---1.dex文件头解析     DEX文件解析---2.Dex文件checksum(校验和)解析     DEX文件解析--3.dex文件 ...

  6. DEX文件解析--6、dex文件字段和方法定义解析

    一.前言    前几篇文章链接:       DEX文件解析---1.dex文件头解析       DEX文件解析---2.Dex文件checksum(校验和)解析       DEX文件解析--3. ...

  7. Yii框架和Vue的完美结合完成前后端分离项目

    背景说明 本文假设你对Yii和Vue都比较熟悉,至少都在项目里用过,另外笔者新人,以后不定时放一些干货,欢迎程序媛关注 Yii是一个PHP全端框架,典型的mvc的项目结构,后端接口都是一个控制器里放了 ...

  8. SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 后端篇(五): 数据表设计、使用 jwt、redis、sms 工具类完善注册登录逻辑

    (1) 相关博文地址: SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(一):搭建基本环境:https://www.cnblogs.com/l-y-h/p ...

  9. Vue学习笔记-Django REST framework3后端接口API学习

    一  使用环境 开发系统: windows 后端IDE: PyCharm 前端IDE: VSCode 数据库: msyql,navicat 编程语言: python3.7  (Windows x86- ...

  10. 基于 jq 实现拖拽上传 APK 文件,js解析 APK 信息

    技术栈 jquery 文件上传:jquery.fileupload,github 文档 apk 文件解析:app-info-parser,github 文档 参考:前端解析ipa.apk安装包信息 - ...

随机推荐

  1. 1.httprunner3入门

    一.httprunner3 httprunner是一款面向HTTP(S)协议的通用开源测试框架 支持三种格式的用例:YAML/JSON/Pytest,httprunner3以前不支持pytest用例 ...

  2. 沁恒CH32V003F4P6 开发板上手报告和Win10环境配置

    CH32V003 沁恒最近推出的低价CH32V003系列, 基于青稞RISC-V2A内核, 48MHz主频, 2KB SRAM, 16KB Flash, 工作电压兼容3.3V和5V. 主要参数如下 S ...

  3. 修改linux系统时间

    在Linux系统中,可以用date命令来显示或设定系统的日期与时间 1. 查看系统时间 [root@iZ2ze0gm3scdypc0i15r8yZ ~]# date Tue Aug 16 00:10: ...

  4. 2022春每日一题:Day 39

    题目:[USACO1.4]等差数列 Arithmetic Progressions 一个很显然的做法,枚举公差,首项,p,q这样的话复杂度爆炸,不过可以肯定的一点,如果我们这样做,找到了答案就可以直接 ...

  5. 2022春每日一题:Day 36

    题目:[JLOI2013]删除物品 直接做显然比较复杂,这个题是说对顶栈,但是可以把两个栈拼在一起,记录一下栈顶的下标,然后这样这题就可以转化为线性上的操作查询了,用树状数组简单维护一下就ok了(某个 ...

  6. windows server2016/2019在vmware上安装失败

    问题:无法进入装机界面 现象一:打开虚拟机后进入虚拟bios界面,无法引导iso镜像 解决方法1:从虚拟机设置里,修改引导选项,如果需要修改启动盘则设置强制执行BIOS设置 下图为vsphere的截图 ...

  7. Crony 一个基于Go语言实现的分布式定时任务管理平台

    crony - 分布式定时任务管理平台 1. 基本介绍 1.1 项目背景 项目中存在许多定时任务,很多代码写法都是采取见缝插针式的写法或者直接丢到task服务里面写,存在以下问题 服务多实例时执行定时 ...

  8. orcl rollup 分组小计、合计

    表数据: select * from group_test; 分组小计.合计: select group_id, decode(concat(job, group_id), null, '合计', g ...

  9. easyui textbox setvalue 和 settext前后之别

    今天在这里转了好久,浪费了不少时间.话不多说直接上干货: 1.text与value设置不同的值一定要先赋值 value后赋值text, 否则全为value值 2.若只setValue,则getValu ...

  10. linux-微服务-jar包部署指令

    1 orderservice docker build -t orderservice . docker run -d -p 8084:8084 --name orderservice orderse ...