这次上传使用的是Elemet-ui的uoload上传组件,组件预留的钩子回调还是比较充足的。

1:  实现多图上传主要用到以下两个属性:

下面讲一下属性使用:

 <el-upload
:action="actionUrl + tokenInfo"
list-type="picture-card" //图片预览形式
multiple //是否支持多文件上传
:auto-upload="false" // 关闭默认的自动上传, 默认为true ,选择文件过后会立刻上传
ref="upload" //手动上传
accept=".jpg,.jpeg,.png,.JPG,.JPEG" //支持的文件格式
name="picture" // 上传文件的字段名
:data="uploadPictureData" // 附带的上传参数
:file-list="fileList"
:on-exceed="handleExceed" //选择文件超出个数时触发
:on-change="handlePictureChange" //文件增减、上传触发
:http-request="uploadFile" // 覆盖默认的上传行为, 默认情况下如果上传多张照片会请求多次
:limit="uploadSize" // 选择文件的最大个数
:on-preview="handlePictureCardPreview">
<i class="el-icon-plus"></i>
</el-upload>
   默认情况下会请求多次 , 如果加上 :http-request="uploadFile"  只会请求一次

在上传事件触发后,多图上传的默认实现调用了三次POST请求。

题主的需求正好需要的是多图一次上传,并且还要附带一些基础表单信息。
思路就是使用H5的FormData对象模拟表单上传:

    1. 修改:auto-upload="false"属性为false,阻止组件的自动上传
    2. new FormData()创建创建FormData对象
    3. FormData对象设置文件,并把FormData作为参数发送到后台(后台是java实现)

前台代码:

<!-- html组件代码 -->
<el-upload
:multiple="multiple"
action="${pageContext.request.contextPath}/lookup/editEvidence/123"
list-type="picture-card"
:auto-upload="false"
:http-request="uploadFile"
ref="upload"
>
<i class="el-icon-plus"></i>
</el-upload>
<el-button @click="subPicForm">提交上传</el-button>

在组件标签上设置:auto-upload="false"阻止自动上传为手动上传
修改 :http-request="uploadFile"覆盖组件的默认上传方法

 <!-- JS代码 -->
new Vue({
el: '#app',
data: {
multiple:true,
formDate:""
},
mounted: function () {
},
methods: {
uploadFile(file){
this.formDate.append('file', file.file);
},
subPicForm(){
this.formDate = new FormData()
this.$refs.upload.submit();
this.formDate.append('WS_CODE', "12133");
let config = {
headers: {
'Content-Type': 'multipart/form-data'
}
}
axios.post("your URL", this.formDate,config).then( res => {
console.log(res)
}).catch( res => {
console.log(res)
})
}
}
})

注意uploadFile()方法,这是我们覆盖的上传方法。我猜测在我们触发开始上传文件事件(this.$refs.upload.submit())后,组件会遍历当前文件列表的的文件,并调用上传(uploadFile())方法,在(uploadFile())方法里会传入一个file参数:

红色方框就是我们要的每个file文件。
现在思路清晰了,只要在每次调用uploadFile()方法里把遍历到的文件append()FormData里面,然后再在上传按钮的事件里将“装载”好的FormData对象作为参数发送到服务端就好了,

表单数据也是一样的append操作,下面是后台的java代码:

 参考:

https://segmentfault.com/a/1190000015834181

springBoot+ vue+ Element-ui实现合并多图上传(一次请求多张图片)的更多相关文章

  1. 基于 vue+element ui 的cdn网站(多页面,都是各种demo)

    前言:这个网站持续更新中...,有网上预览,github上也有源码,喜欢记得star哦,欢迎留言讨论. 网站地址:我的个人vue+element ui demo网站 github地址:yuleGH g ...

  2. 基于vue(element ui) + ssm + shiro 的权限框架

    zhcc 基于vue(element ui) + ssm + shiro 的权限框架 引言 心声 现在的Java世界,各种资源很丰富,不得不说,从分布式,服务化,orm,再到前端控制,权限等等玲琅满目 ...

  3. vue+element ui中select组件选择失效问题原因与解决方法

    codejing 2020-07-10 09:13:31  652  收藏 分类专栏: Web Vue Element UI 版权 .当表单form赋完值后,如果后续又对form中某一属性值进行操作如 ...

  4. 分享一个自搭的框架,使用Spring boot+Vue+Element UI

    废弃,新的:https://www.cnblogs.com/hackyo/p/10453243.html 特点:前后端分离,可遵循restful 框架:后端使用Spring boot,整合了aop.a ...

  5. Vue + Element UI 实现权限管理系统

    Vue + Element UI 实现权限管理系统 前端篇(一):搭建开发环境 https://www.cnblogs.com/xifengxiaoma/p/9533018.html

  6. vue + element ui 实现实现动态渲染表格

    前言:之前需要做一个页面,能够通过表名动态渲染出不同的表格,这里记录一下.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9786326.html 网站地址:我的 ...

  7. vue + element ui 表格自定义表头,提供线上demo

    前言:工作中用到 vue+element ui 的前端框架,需要使用自定义表头,需要使用 re.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9710826.h ...

  8. vue+element ui 的上传文件使用组件

    前言:工作中用到 vue+element ui 的前端框架,使用到上传文件,则想着封装为组件,达到复用,可扩展.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9 ...

  9. vue+element ui 的表格列使用组件

    前言:工作中用到 vue+element ui 的前端框架,有这个场景:很多表格的列有许多一样的,所以考虑将列封装为组件.转载请注明出处:https://www.cnblogs.com/yuxiaol ...

随机推荐

  1. SQL常用语句(二)

    --语 句 功 能--数据操作SELECT --从数据库表中检索数据行和列INSERT --向数据库表添加新数据行DELETE --从数据库表中删除数据行UPDATE --更新数据库表中的数据 --数 ...

  2. SQLServer创建用户登录

    创建用户登录注意事项 密码是区分大小写的. 只有创建SQL Server登录时,才支持对密码预先进行哈希运算. 如果指定MUST_CHANGE,则CHECK_EXPIRATION和 CHECK_POL ...

  3. SqlServer如何给表添加新的字段以及字段注释

    语法: USE 数据库名ALTER TABLE 表名 ADD 字段名  类型  默认值  是否为空;EXEC sp_addextendedproperty N'MS_Description', N'注 ...

  4. 黑阔主流攻防之不合理的cookie验证方式

    最近博主没事干中(ZIZUOZISHOU),于是拿起某校的习题研究一番,名字很6,叫做黑阔主流攻防习题 虚拟机环境经过一番折腾,配置好后,打开目标地址:192.168.5.155 如图所示 这里看出题 ...

  5. python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)

    在写网络爬虫的时候,有时候会抓取到一些json格式的字符串,想要通过python字典的方式对字串中的内容进行寻址,则需要将json字符串先转换为python字典. dumps()函数: loads() ...

  6. Quick Select算法

    https://blog.csdn.net/Yaokai_AssultMaster/article/details/68878950 https://blog.csdn.net/mrbcy/artic ...

  7. Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems(动态规划+矩阵快速幂)

    Problem   Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems Time Limit: 3000 mSec P ...

  8. 你不需要 jQuery,但你需要一个 DOM 库

    写这篇文章的目的,一方面是介绍一下自己编写的模块化 DOM 库 domq.js,另一方面是希望大家对 jQuery 有一个正确的认识,即使 jQuery 已经逐渐退出历史舞台,但是它的 API 将会以 ...

  9. Django中使用极验Geetest滑动验证码

    一,环境部署 1.创建一个django测试项目 此处省略... 二,文档部署 1.下载安装python对应的SDK 使用命令从Github导入完整项目:git clone https://github ...

  10. Photoshop调出田园照片唯美手绘油画效果

    先看看效果图 原片分析:妹子脸上的光不够通透,有些灰暗,整体色调不够分明. 后期思路:色彩往油画风格调整,让画面色彩更加油润.丰富. 基础调整 (1)曝光根据照片的实际情况进行调整 (2)增加阴影部分 ...