Vue + iView实现Excel上传功能的完整代码


Posted in Vue.js onJune 22, 2021

1、HTML部分

<Col span="2">上传文件:</Col>
<Col span="22" class="uploadExcelBox">
    <Upload ref="uploadExcel" :loading="uploadLoading" :action="uploadFileUrl" accept="xlsx,xls" :format="uploadFormat" :before-upload="beforeImgFile" :on-success="successImgFile" :on-error="errorImgFile" :show-upload-list="true">
         <Button type="success">上传附件</Button>
	 </Upload>
     <div v-if="uploadingFile !== null">待上传文件:
          <span class="blueFont">{{ fileName }}</span>
          <Button @click="uploadFun(index)" :loading="loadingStatus" class="manualUploadBtn">{{ loadingStatus ? '上传中...' : '点击开始上传' }}</Button>
      </div>
</Col>

2、JS部分

<script>
    // import excel from '@/libs/excel'
	import service from '@/libs/request' //用来取当前域名
	import reportFormApi from '@/api/reportForm'
    export default {
        data() {
            return {
                uploadLoading:false,//上传控件loading状态
				uploadFileUrl: "",
				uploadFormat:['xlsx','xls'],
				uploadingFile:null,//待上传的文件
                loadingStatus:false,//upload组件的状态
                fileName:"",//待上传文件的名称
            }
        },
        mounted() {
            this.uploadFileUrl = service.apiUrl + "/qingximaster/winInfo/execlAdd";//上传Excel的接口路径,后端人员提供。
        },
        methods: {
			// 图片上传之前
			beforeImgFile(file) {
				// console.log(file);
				const fileExt = file.name.split('.').pop().toLocaleLowerCase()
				if (fileExt === 'xlsx' || fileExt === 'xls') {
					var formdata = new FormData();
					formdata.append("file",file);
                    this.fileName = formdata.get('file').name;//通过formdata.get('file')方法,可以取file文件里的信息,例如Excel的文件名。
					this.uploadingFile =  formdata;//注意:这个将作为参数传给接口实现上传。传给接口的file不需要 formdata.get('file'),直接传file。
				} else {
					this.$Notice.warning({
						title: '文件类型错误',
						desc: '文件:' + file.name + '不是EXCEL文件,请选择后缀为.xlsx或者.xls的EXCEL文件。'
					})
				}
				return false
			},
			// 上传成功
			successImgFile(response, file, fileList) {
                this.$Notice.success({
                    title: '提示',
                    desc: '上传成功!'
                })
			},
			// 上传失败
			errorImgFile(error, file, fileList) {
				this.$Notice.success({
                    title: '提示',
                    desc: '上传失败!'
                })
				console.log(error);
			},
			uploadFun(index){//调接口上传Excel
				this.loadingStatus = true;
				reportFormApi.uploadExcel({
                    url: this.uploadFileUrl,
                    file: this.uploadingFile
                }).then(res =>{
					this.uploadingFile = null;
                    this.fileName = "";
                    if(res.code==0){
                        this.infoList[index].content = JSON.stringify(res.data);
					    // console.log(this.infoList[index].content);
                        this.$Message.success("上传成功!");
                    }else{
                        this.$Message.error(res.message);
                    }
				}).finally(()=>{
					this.loadingStatus = false;
                    this.uploadLoading = false;
                })
			},
        }
    }

3、页面效果如下

(1)进入页面默认展示的样子

Vue + iView实现Excel上传功能的完整代码

 (2)选中要上传的Excel

Vue + iView实现Excel上传功能的完整代码

 (3)“点击开始上传”之后

Vue + iView实现Excel上传功能的完整代码

 Vue + iView实现Excel上传功能的完整代码

以上就是Vue + iView实现Excel上传的详细内容,更多关于vue iview excel上传的资料请关注三水点靠木其它相关文章!

Vue.js 相关文章推荐
Vue router安装及使用方法解析
Dec 02 Vue.js
基于vue与element实现创建试卷相关功能(实例代码)
Dec 07 Vue.js
Vue实现手机号、验证码登录(60s禁用倒计时)
Dec 19 Vue.js
Vue页面渲染中key的应用实例教程
Jan 12 Vue.js
vue如何使用rem适配
Feb 06 Vue.js
Vue基本指令实例图文讲解
Feb 25 Vue.js
Vue Element-ui表单校验规则实现
Jul 09 Vue.js
Vue elementUI表单嵌套表格并对每行进行校验详解
Feb 18 Vue.js
一篇文章告诉你如何实现Vue前端分页和后端分页
Feb 18 Vue.js
Vue3中toRef与toRefs的区别
Mar 24 Vue.js
vue组件vue-esign实现电子签名
Apr 21 Vue.js
Vue ECharts实现机舱座位选择展示功能
May 15 Vue.js
Vue vee-validate插件的简单使用
Jun 22 #Vue.js
vue3使用vue-router的完整步骤记录
一篇文章学会Vue中间件管道
Jun 20 #Vue.js
Vue过滤器(filter)实现及应用场景详解
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
解决Vue+SpringBoot+Shiro跨域问题
Jun 09 #Vue.js
Vue中插槽slot的使用方法与应用场景详析
You might like
PHP 获取远程文件大小的3种解决方法
2013/07/11 PHP
php从memcache读取数据再批量写入mysql的方法
2014/12/29 PHP
10款PHP开源商城系统汇总介绍
2015/07/23 PHP
用 Javascript 验证表单(form)中多选框(checkbox)值
2009/09/08 Javascript
网页加载时页面显示进度条加载完成之后显示网页内容
2012/12/23 Javascript
javascript如何创建表格(javascript绘制表格的二种方法)
2013/12/10 Javascript
javascript怎么禁用浏览器后退按钮
2014/03/27 Javascript
JS获取当前网页大小以及屏幕分辨率等
2014/09/05 Javascript
使用Javascript实现选择下拉菜单互移并排序
2016/02/23 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
2016/09/05 Javascript
基于AngularJS的拖拽文件上传的实例代码
2017/07/15 Javascript
vue 实现通过手机发送短信验证码注册功能
2018/04/19 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
JS实现的排列组合算法示例
2019/07/16 Javascript
微信小程序后端(java)开发流程的详细步骤
2019/11/13 Javascript
[02:42]2014DOTA2国际邀请赛 三冰专访:我会打到Ti20
2014/07/13 DOTA
Python argv用法详解
2016/01/08 Python
python将回车作为输入内容的实例
2018/06/23 Python
用python标准库difflib比较两份文件的异同详解
2018/11/16 Python
python实现图书借阅系统
2019/02/20 Python
python flask框架实现传数据到js的方法分析
2019/06/11 Python
wxPython实现列表增删改查功能
2019/11/19 Python
Python安装依赖(包)模块方法详解
2020/02/14 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
2020/06/29 Python
python与js主要区别点总结
2020/09/13 Python
Pycharm的Available Packages为空的解决方法
2020/09/18 Python
英国最大的LED专业零售商:Led Hut
2018/03/16 全球购物
西班牙在线药店:DosFarma
2020/03/28 全球购物
俄罗斯药房连锁店:ASNA
2020/06/20 全球购物
几个Shell Script面试题
2014/04/18 面试题
学生出入校管理制度
2014/01/16 职场文书
法定代表人授权委托书
2014/04/04 职场文书
爱心募捐感谢信
2015/01/22 职场文书
2015年市场部工作总结
2015/04/30 职场文书
Python内置类型集合set和frozenset的使用详解
2022/04/26 Python
python库Tsmoothie模块数据平滑化异常点抓取
2022/06/10 Python