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 18 Vue.js
Vue项目如何引入bootstrap、elementUI、echarts
Nov 26 Vue.js
vue中如何自定义右键菜单详解
Dec 08 Vue.js
vue 在服务器端直接修改请求的接口地址
Dec 19 Vue.js
梳理一下vue中的生命周期
Dec 30 Vue.js
vue中使用echarts的示例
Jan 03 Vue.js
Vue vee-validate插件的简单使用
Jun 22 Vue.js
Vue提供的三种调试方式你知道吗
Jan 18 Vue.js
Vue自定义铃声提示音组件的实现
Jan 22 Vue.js
vue项目proxyTable配置和部署服务器
Apr 14 Vue.js
vue封装数字翻牌器
Apr 20 Vue.js
vue-cli3.x配置全局的scss的时候报错问题及解决
Apr 30 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时间戳与日期的转换
2013/06/06 PHP
PHP扩展开发教程(总结)
2015/11/04 PHP
PHP获取网页所有连接的方法(附demo源码下载)
2016/03/30 PHP
10个值得深思的PHP面试题
2016/11/14 PHP
浅谈laravel框架与thinkPHP框架的区别
2019/10/23 PHP
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
js实时监听文本框状态的方法
2011/04/26 Javascript
使用JavaScript动态设置样式实现代码及演示动画
2013/01/25 Javascript
使用forever管理nodejs应用教程
2014/06/03 NodeJs
JS实现仿Windows经典风格的选项卡Tab切换代码
2015/10/20 Javascript
聊一聊Vue.js过渡效果
2016/09/07 Javascript
详解JavaScript RegExp对象
2017/02/04 Javascript
angularjs实现简单的购物车功能
2017/09/21 Javascript
Vue框架下引入ActiveX控件的问题解决
2019/03/25 Javascript
详解Vue的七种传值方式
2021/02/08 Vue.js
[52:09]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第二场
2014/05/26 DOTA
[01:32]DOTA2上海特锦赛现场采访:最想COS的英雄
2016/03/25 DOTA
python继承和抽象类的实现方法
2015/01/14 Python
python3使用PyMysql连接mysql数据库实例
2017/02/07 Python
django轻松使用富文本编辑器CKEditor的方法
2017/03/30 Python
python实现按长宽比缩放图片
2018/06/07 Python
对python遍历文件夹中的所有jpg文件的实例详解
2018/12/08 Python
深入学习python多线程与GIL
2019/08/26 Python
使用OpenCV获取图片连通域数量,并用不同颜色标记函
2020/06/04 Python
详解如何将 Canvas 绘制过程转为视频
2021/01/25 HTML / CSS
Wedgwood英国官方网站:英式精致骨瓷餐具、礼品与生活精品,源于1759年
2019/09/02 全球购物
可以使用抽象函数重写基类中的虚函数吗
2013/06/02 面试题
商场主管竞聘书
2014/03/31 职场文书
工商企业管理应届生求职信
2014/05/04 职场文书
大学生暑期社会实践证明范本
2014/10/24 职场文书
婚前保证书范文
2015/02/28 职场文书
倡议书怎么写?
2019/04/11 职场文书
Python获取江苏疫情实时数据及爬虫分析
2021/08/02 Python
python基础之文件操作
2021/10/24 Python
Redis模仿手机验证码发送的实现示例
2021/11/02 Redis
解决MySQL报“too many connections“错误
2022/04/19 MySQL