element-ui中el-upload多文件一次性上传的实现


Posted in Javascript onDecember 02, 2020

项目需求是多个文件上传,在一次请求中完成,而ElementUI的上传组件是每个文件发一次上传请求,因此我们借助FormData的格式向后台传文件组

html代码

<div class="upload-file">
 <el-upload
   accept=".xlsx"
   ref="upload"
   multiple
   :limit="5"
   action="http://xxx.xxx.xxx/personality/uploadExcel"
   :on-preview="handlePreview"
   :on-change="handleChange"
   :on-remove="handleRemove"
   :on-exceed="handleExceed"
   :file-list="fileList"
   :http-request="uploadFile"
   :auto-upload="false">
   <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
   <el-button style="margin-left: 133px;" size="small" type="success" @click="submitUpload">上传到服务器
   </el-button>
   <div slot="tip" class="el-upload__tip">只能上传xlsx文件,且不超过100m</div>
 </el-upload>
 </div>

修改:auto-upload="false"属性为false,阻止组件的自动上传
:http-request="uploadFile"覆盖上传事件
@click=“submitUpload”,给上传按钮绑定事件

element-ui中el-upload多文件一次性上传的实现

data() {
	return {
		fileData: '', // 文件上传数据(多文件合一)
		fileList: [],  // upload多文件数组
		uploadData: {
     fieldData: {
      id: '', // 机构id,
     }
    },
	}
}


methods:{
		// 上传文件
		uploadFile(file) {
		  this.fileData.append('files', file.file); // append增加数据
		},
		
		// 上传到服务器
	   submitUpload() {
	      let fieldData = this.uploadData.fieldData; // 缓存,注意,fieldData不要与fileData看混
	      if (fieldData.id === '') {
	        this.$message({
	          message: '请选择上传机构',
	          type: 'warning'
	        })
	      } else if (this.fileList.length === 0) {
	        this.$message({
	          message: '请先选择文件',
	          type: 'warning'
	        })
	      } else {
	        const isLt100M = this.fileList.every(file => file.size / 1024 / 1024 < 100);
	        if (!isLt100M) {
	          this.$message.error('请检查,上传文件大小不能超过100MB!');
	        } else {
	          this.fileData = new FormData(); // new formData对象
	          this.$refs.upload.submit(); // 提交调用uploadFile函数
	          this.fileData.append('pathId', fieldData.id); // 添加机构id
	          this.fileData.append('loginToken', this.loginToken); // 添加token
	          post(this.baseUrlData.url_02 + ":8090/personality/uploadExcel", this.fileData).then((response) => {
	            if (response.data.code === 0) {
	              this.$message({
	                message: "上传成功",
	                type: 'success'
	              });
	              this.fileList = [];
	            } else {
	              this.$message({
	                message: response.data.desc,
	                type: 'error'
	              })
	            }
	          });
	        }
	      }
	    },
	    
      //移除
      handleRemove(file, fileList) {
        this.fileList = fileList;
        // return this.$confirm(`确定移除 ${ file.name }?`);
      },

      // 选取文件超过数量提示
      handleExceed(files, fileList) {
        this.$message.warning(`当前限制选择 5 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
      },	   

			 //监控上传文件列表
      handleChange(file, fileList) {
        let existFile = fileList.slice(0, fileList.length - 1).find(f => f.name === file.name);
        if (existFile) {
          this.$message.error('当前文件已经存在!');
          fileList.pop();
        }
        this.fileList = fileList;
      },
}

此时就达到上传4个文件只发送了一个xhr请求了

element-ui中el-upload多文件一次性上传的实现

到此这篇关于element-ui中el-upload多文件一次性上传的实现的文章就介绍到这了,更多相关el-upload多文件上传内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
查询绑定数据岛的表格中的文本并修改显示方式的js代码
Dec 15 Javascript
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
Dec 27 Javascript
jquery实现点击文字可编辑并修改保存至数据库
Apr 15 Javascript
javascript控制在光标位置插入文字适合表情的插入
Jun 09 Javascript
jquery图片播放浏览插件prettyPhoto使用详解
Dec 19 Javascript
js运动动画的八个知识点
Mar 12 Javascript
jQuery mobile 移动web(4)
Dec 20 Javascript
浅谈几种常用的JS类定义方法
Jun 08 Javascript
JavaScript瀑布流布局实现代码
May 06 Javascript
微信小程序身份证验证方法实现详解
Jun 28 Javascript
jQuery使用jsonp实现百度搜索的示例代码
Jul 08 jQuery
JavaScript常用8种数组去重代码实例
Sep 09 Javascript
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
Dec 02 #Vue.js
keep-alive保持组件状态的方法
Dec 02 #Javascript
vue组件中节流函数的失效的原因和解决方法
Dec 02 #Vue.js
Vue3+elementui plus创建项目的方法
Dec 01 #Vue.js
JS实现超级好看的鼠标小尾巴特效
Dec 01 #Javascript
echarts饼图各个板块之间的空隙如何实现
Dec 01 #Javascript
浅谈es6中的元编程
Dec 01 #Javascript
You might like
php 下载保存文件保存到本地的两种实现方法
2013/08/12 PHP
ThinkPHP3.1新特性之多层MVC的支持
2014/06/19 PHP
php版微信公众平台回复中文出现乱码问题的解决方法
2016/09/22 PHP
php自定义扩展名获取函数示例
2016/12/12 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
THINKPHP5分页数据对象处理过程解析
2020/10/28 PHP
PHP内存溢出优化代码详解
2021/02/26 PHP
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
JS Excel读取和写入操作(模板操作)实现代码
2010/04/11 Javascript
juqery 学习之四 筛选查找
2010/11/30 Javascript
jQuery实用基础超详细介绍
2013/04/11 Javascript
javascript使用正则获取url上的某个参数
2014/09/04 Javascript
JavaScript 开发工具webstrom使用指南
2014/12/09 Javascript
jquery动态改变div宽度和高度
2015/02/09 Javascript
VUE axios上传图片到七牛的实例代码
2017/07/28 Javascript
Node.js利用断言模块assert进行单元测试的方法
2017/09/28 Javascript
Scala解析Json字符串的实例详解
2017/10/11 Javascript
微信小程序三级联动选择器使用方法
2020/05/19 Javascript
vue devtools的安装与使用教程
2018/08/08 Javascript
JS异步错误捕获的一些事小结
2019/04/26 Javascript
vue使用高德地图点击下钻上浮效果的实现思路
2019/10/12 Javascript
python3实现短网址和数字相互转换的方法
2015/04/28 Python
python中使用while循环的实例
2019/08/05 Python
Pytorch 高效使用GPU的操作
2020/06/27 Python
python 实现关联规则算法Apriori的示例
2020/09/30 Python
英国最大的化装舞会服装网站:Fancydress.com
2017/08/15 全球购物
《雪地里的小画家》教学反思
2014/02/22 职场文书
毕业生写求职信的要点
2014/03/04 职场文书
电子商务求职信
2014/06/15 职场文书
2015年消防工作总结
2015/04/24 职场文书
创业计划书之家教中心
2019/09/25 职场文书
详解Go语言运用广度优先搜索走迷宫
2021/06/23 Python
Redis字典实现、Hash键冲突及渐进式rehash详解
2021/09/04 Redis
电脑无法安装Windows 11怎么办?无法安装Win11的解决方法
2021/11/21 数码科技
解决Python保存文件名太长OSError: [Errno 36] File name too long
2022/05/11 Python
关于pytest结合csv模块实现csv格式的数据驱动问题
2022/05/30 Python