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 实现基础组件的自动化全局注册
Dec 25 Vue.js
vue实现图书管理系统
Dec 29 Vue.js
vue实现轮播图帧率播放
Jan 26 Vue.js
vue-video-player 断点续播的实现
Feb 01 Vue.js
Vue如何实现变量表达式选择器
Feb 18 Vue.js
vue 动态添加的路由页面刷新时失效的原因及解决方案
Feb 26 Vue.js
Vue3.0 手写放大镜效果
Jul 25 Vue.js
vue如何使用模拟的json数据查看效果
Mar 31 Vue.js
关于vue-router-link选择样式设置
Apr 30 Vue.js
vue项目如何打包之项目打包优化(让打包的js文件变小)
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 MemCached高级缓存配置图文教程
2010/08/05 PHP
一些php项目中比较通用的php自建函数的详解
2013/06/06 PHP
php增删改查示例自己写的demo
2013/09/04 PHP
用PHP实现弹出消息提示框的两种方法
2013/12/17 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
2019/05/14 PHP
js apply/call/caller/callee/bind使用方法与区别分析
2009/10/28 Javascript
js判断字符长度以及中英文数字等
2013/12/31 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
2015/08/11 Javascript
JS实现3D图片旋转展示效果代码
2015/09/22 Javascript
深入分析jQuery的ready函数是如何工作的(工作原理)
2015/12/17 Javascript
分享javascript实现的冒泡排序代码并优化
2016/06/05 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
2016/12/02 Javascript
基于jPlayer三分屏的制作方法
2016/12/21 Javascript
jQuery extend()详解及简单实例
2017/05/06 jQuery
vue init webpack myproject构建项目 ip不能访问的解决方法
2018/03/20 Javascript
AngularJs分页插件使用详解
2018/06/30 Javascript
通过封装scroll.js 获取滚动条的值
2018/07/13 Javascript
详解webpack import()动态加载模块踩坑
2018/07/17 Javascript
angular将html代码输出为内容的实例
2018/09/30 Javascript
浅谈Vue数据响应
2018/11/05 Javascript
JavaScript实现shuffle数组洗牌操作示例
2019/01/03 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
2019/04/28 Javascript
vue 解决provide和inject响应的问题
2020/11/12 Javascript
使用cx_freeze把python打包exe示例
2014/01/24 Python
python常规方法实现数组的全排列
2015/03/17 Python
用TensorFlow实现戴明回归算法的示例
2018/05/02 Python
python实现宿舍管理系统
2019/11/22 Python
英国顶级家庭折扣店:The Works
2017/09/06 全球购物
Banana Republic欧盟:美国都市简约风格的代表品牌
2018/05/09 全球购物
英国索普公园票务和酒店套餐:Thorpe Breaks
2019/09/14 全球购物
自1926年以来就为冰岛保持温暖:66°North
2020/11/27 全球购物
优秀教师感人事迹材料
2014/05/04 职场文书
中国世界遗产导游词
2015/02/13 职场文书
2015年幼儿园大班工作总结
2015/04/25 职场文书
《最后一头战象》教学反思
2016/02/16 职场文书
导游词之介休绵山
2019/12/31 职场文书