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 获取到数据但却渲染不到页面上的解决方法
Nov 19 Vue.js
vue element实现表格合并行数据
Nov 30 Vue.js
vue 在单页面应用里使用二级套嵌路由
Dec 19 Vue.js
Vue组件简易模拟实现购物车
Dec 21 Vue.js
Vue过滤器,生命周期函数和vue-resource简单介绍
Jan 12 Vue.js
深入了解Vue动态组件和异步组件
Jan 26 Vue.js
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
Feb 20 Vue.js
详解Vue3.0 + TypeScript + Vite初体验
Feb 22 Vue.js
Vue中避免滥用this去读取data中数据
Mar 02 Vue.js
如何用vue实现网页截图你知道吗
Nov 17 Vue.js
vue整合百度地图显示指定地点信息
Apr 06 Vue.js
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
Aug 05 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和ACCESS写聊天室(十)
2006/10/09 PHP
ThinkPHP中ajax使用实例教程
2014/08/22 PHP
php约瑟夫问题解决关于处死犯人的算法
2015/03/23 PHP
img标签中onerror用法
2009/08/13 Javascript
JQuery中对Select的option项的添加、删除、取值
2013/08/25 Javascript
JavaScript对象反射用法实例
2015/04/17 Javascript
Nodejs中session的简单使用及通过session实现身份验证的方法
2016/02/04 NodeJs
详解JavaScript的AngularJS框架中的表达式与指令
2016/03/05 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
前端主流框架vue学习笔记第二篇
2017/07/26 Javascript
js实现微信/QQ直接跳转到支付宝APP打开口令领红包功能
2018/01/09 Javascript
基于angular6.0实现的一个组件懒加载功能示例
2018/04/12 Javascript
Iview Table组件中各种组件扩展的使用
2018/10/20 Javascript
[40:29]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第一场
2018/04/10 DOTA
[07:20]2018DOTA2国际邀请赛寻真——逐梦Mineski
2018/08/10 DOTA
Python内置数据结构与操作符的练习题集锦
2016/07/01 Python
Django框架使用内置方法实现登录功能详解
2019/06/12 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
python虚拟环境模块venv使用及示例
2020/03/04 Python
Window系统下Python如何安装OpenCV库
2020/03/05 Python
Python urllib request模块发送请求实现过程解析
2020/12/10 Python
Python环境搭建过程从安装到Hello World
2021/02/05 Python
纽约和芝加哥当天送花:Ode à la Rose
2019/07/05 全球购物
澳大利亚波希米亚风时尚品牌:Tree of Life
2019/09/15 全球购物
外企测试工程师面试题
2015/02/01 面试题
软件测试题目
2013/02/27 面试题
化工专业推荐信范文
2013/11/28 职场文书
小学教师听课制度
2014/02/01 职场文书
《狐假虎威》教学反思
2014/02/07 职场文书
亮化工程实施方案
2014/03/17 职场文书
怎样填写就业意向
2014/04/02 职场文书
班主任个人工作反思
2014/04/28 职场文书
产品推广策划方案
2014/05/10 职场文书
爱心助学感谢信
2015/01/21 职场文书
python实现自动清理文件夹旧文件
2021/05/10 Python
MySQL系列之十五 MySQL常用配置和性能压力测试
2021/07/02 MySQL