el-upload组件默认情况下上传多少个文件就会请求多少次上传接口,如何一次上传多个文件而不必多次请求上传接口呢?直接看代码

html

<el-upload :action="actionUrl" :auto-upload="false" :multiple="true" :file-list="fileList" :on-change="onChange" :on-remove="onRemove" :on-exceed="OnExceed" ref="upload" list-type="picture" :limit="10">
<button>上传附件文档</button>
<span>注意:支持jpg,png格式</span>
</el-upload>

js

onChange(file, fileList) { //这里做一些文件控制,注意:就算一次选取多个文件,这里依旧会执行多次
  const isJPG = file.raw.type === 'image/jpeg';
  if (!isJPG) {
    this.$message.error('上传头像图片只能是 JPG 格式!');
    fileList.pop()
  }
  let existFile = fileList.slice(0, fileList.length - 1).find(f => f.name === file.name)
  if (existFile) {
    this.$message.error('当前文件已经存在!');
    fileList.pop()
  }
  this.fileList = fileList
}, onRemove(file, fileList) {
  this.fileList = fileList
}, OnExceed(file, fileList) {
  this.$message.error(`最多只能上传10张图片!`);
}, submitUpload() { //上传函数,如果把提交函数用在http-request钩子中,fileList多长就执行请求多少次接口,依旧是无法做到只请求一次上传多文件
  var formData = new FormData(); // 用FormData存放上传文件
  this.fileList.forEach(file => { 
      formData.append('reportFile', file.raw, file.raw.name); //此处一定是append file.raw 上传文件只需维护fileList file.raw.name要加上
  })
  uploadFiles(formData).then(res => { //手动上传貌似无法触发成功或失败的钩子函数,因此这里手动调用
  this.onSuccess()
}).catch(err => {
   console.log(err)
   this.onError()
})
}

一些注意的关键点都已经写在注释了,还有一点需要注意的,如果把el-upload用在el-form内,点击上传的时候回刷新路由,目前还没找到解决办法,以上都是踩的一些小坑,希望对大家有帮助!!!

 
 
 
 
 

el-upload控件一次接口请求上传多个文件的更多相关文章

  1. elementUI一次请求上传多个文件

    elementui <el-upload                       class="upload-demo"                       ac ...

  2. 重写FileUpload控件让它可以显示上传后的文件名

    我在以前的开发中经常遇到这样的场景:文件上传之后需要显示文件名,但是asp.net自带的fileupload是不能付给上传后的文件名值的. 以前都是做一个label显示的,今天想起来了,写个控件封装一 ...

  3. C#picturebox控件图片以json格式上传java后台保存

    关于winform上传图片到Java后端,保存到数据库,有多种方法,本文主要介绍利用picturebox控件,点击按钮上传图片,将图片转化为base64格式,以json格式上传到Java后台,再从ja ...

  4. 利用HttpURLConnection发送post请求上传多个文件

    本文要用java.net.HttpURLConnection来实现多个文件上传 1. 研究 form 表单到底封装了什么样的信息发送到servlet. 假如我参数写的内容是hello word,然后二 ...

  5. web 前端常用组件【06】Upload 控件

    因为有万恶的IE存在,所以当Web项目初始化并进入开发阶段时. 如果是项目经理,需要知道客户将会用什么浏览器来访问系统. 明确知道限定浏览器的情况下,你才能从容的让手下的封装必要的前端组件. 本篇文章 ...

  6. ListView 控件和 INotifyPropertyChanged 接口

    原文:ListView 控件和 INotifyPropertyChanged 接口 ListView 控件和 DataGridView 控件 ListView 是跟 Winform 中 DataGri ...

  7. Delphi IDHTTP控件:GET/POST 请求

    Delphi IDHTTP控件:GET/POST 请求   最近一直在使用IDHTTP,下面是一些关于 GET.POST 请求基本使用方法的代码 一.GET 请求 1 procedure GetDem ...

  8. 梦想CAD控件图层COM接口知识点

    梦想CAD控件图层COM接口知识点 一.新建图层 主要用到函数说明: _DMxDrawX::AddLayer 增加新的图层.详细说明如下: 参数 说明 BSTR pszName 图层名 c#中实现代码 ...

  9. 使用WebBrowser控件时在网页元素上绘制文本或其他自定义内容

    原文:使用WebBrowser控件时在网页元素上绘制文本或其他自定义内容 第一次在CNBlogs上发Post是提出一个有关使用WebBrowser控件时对SELECT网页元素操作的疑惑,这个问题至今也 ...

随机推荐

  1. Windows 命令行方式打印和设置变量

    echo %PATH% http://blog.csdn.net/snlei/article/details/7211770

  2. thinkphp5使用Markdown编辑器Editor.md并上传图片

    Editor.md官网:https://pandao.github.io/editor.md/index.html 下载后解压放到项目内,和引入ueditor差不多 1.引入项目资源 <!--m ...

  3. day10函数作业详解

    1.day10题目 2,写函数,接收n个数字,求这些参数数字的和.(动态传参) 3,读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么? a=10 b=20 def test5(a,b): ...

  4. noip2018复习计划啊

    需要复习的算法额: exgcd CRT INV dij spfa(~) 矩阵快速幂~高斯消元 tarjan(scc,bcc) treap splay 线段树 dp(决策单调,斜率,四边形不等式) rh ...

  5. docker nginx部署.net core后端站点和angular前端站点

    首先声明,服务器是linux 版本是ubuntu server 18.04,不是windows server.windows server 2016放弃治疗了,2019可能会有改善,不过云厂商的公共镜 ...

  6. (转)Linux网络接口配置文件ifcfg-eth0解析

    原文:http://blog.51cto.com/xtbao/1671739 https://www.cnblogs.com/arvintang/p/5990599.html http://blog. ...

  7. FIRST集和FOLLOW集,FIRSTVT集和LASTVT集的求法

    学习编译原理时, 这几个集合相信大家并不陌生:FIRST.FOLLOW.FIRSTVT.LASTVT. 其中First和Follow是一对,而Firstvt和Lastvt是一对. 它们的作用分别是: ...

  8. 前后端API交互数据加密——AES与RSA混合加密完整实例

    前言 前段时间看到一篇文章讲如何保证API调用时数据的安全性(传送门:https://blog.csdn.net/ityouknow/article/details/80603617),文中讲到利用R ...

  9. WebGL之物体选择

    原文地址: WebGL之物体选择 使用WebGL将图形绘制到画布后,如何与外部进行交互?这其中最关键的就是如何实现物体的选择.比如鼠标点击后判断是否选中了某个图形或图形的某个部分. 本节实现的效果: ...

  10. vue-extend 选项

    vue-extend 选项 mixins 和extend 很相似,但有区别: var extendNews={ //后来的内容用变量接收 updated:function(){ console.log ...