Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)


Posted in Javascript onMarch 23, 2020

最近有使用vue+elementUI实现多图片上传的需求,遂做此纪录。
本次主要写一下前端的实现细节,至于后台以Multipart[ ]数组接收即可,不再赘述,网上一搜大把文章可供参考。
本次使用elementui的上传图片控件的照片墙类型,其使用示例可具体查看官方文档

Elementui 多图上传控件

需要注意的是,官方文档中的示例采用自动上传的方式,大多数情况我们是需要点击上传按钮或和表单一起提交才开始上传的(即手动上传),此时官方的示例就不满足我们的需求了。怎么办?当然是自己动手丰衣足食啦!!!
进入正题实现后以及上传保存成功后的效果如图

Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)

Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)

实现代码

Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)

这里有几个属性需要注意一下(敲黑板!!!)

因为本次采用手动上传所以需要把action属性置为空,上传的url我们在点击确定时再传给控件的方法
multiple:表示支持多图上传
auto-upload:表示自动上传此处需要设置为“true”(原因下面重点讲)
accept表示允许上传的图片后缀(填写好后点击选择图片的按钮时,浏览器会过滤掉不属于这些后缀的图片。如需要多个值用“,”隔开)
list-type:图片显示样式,可以参考官方文档
file-list:图片回显的文件列表
before-upload:上传前执行的方法,可以在这里检查图片的类型、大小等
http-request:该方法会携带一个content参数使用其属性content.file可以获取到将要上传的文件对象
on-preview:触发图片预览时的方法
on-exchange:图片列表更改时触发的方法,该方法携带(file,fileList)两个参数,file表示刚刚新增到图片列表的文件,fileList表示此时的文件列表
on-remove:表示删除图片时触发的方法同样携带(file,fileList)两个参数
on-exceed:方法表示上传的列表长度超过限制时触发的方法,前提是设置的limit属性,该属性接收Number类型

接下来说为什么要手动上传还要将”auto-upload“设置为true。
要想上述的before-upload、on-exchange、on-remove等关键方法生效需要把”auto-upload“设置为true

选好了要上传的图片点击上传是不是就ok了?试了一下发现不行,why?我们在选择图片时触发的on-change方法中打印file参数

Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)
Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)

通过打印发现file参数并不是我们真正想要的对象,仔细观察会看到file对象中还有一个raw对象,此时眼前一亮,这才是我们想要的
笔者的采用的方法是在上传的方法中去遍历上传列表拿到每个对象中的raw对象,然后将拿到的raw对象组成的list传到后台去保存(别忘了Format对象)

Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)

如果有其他更好的获取方法还希望多多指点!!!
上传成功后怎么回显呢?
我们知道上传成功后后台会将图片的url返回给我们。我是这么做:把后台但会的url集合再转成file的集合

Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)

其中this.form.images即为url的集合
这样就可以成功回显了,还可以继续在上传后的列表再次上传或删除已上传的图片
注意:已经上传了的图片已经不可以再次提交到后台再次上传,这个时候就需要你将已上传的图片过滤掉再上传,可以在上传的时候判断图片的url中包不包含“blob”,如果包含则可以上传,若不包含说明已经上传过了需要过滤掉,此外还需要保持上传的顺序

Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)

总结

到此这篇关于Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)的文章就介绍到这了,更多相关vue elementUI多图片上传 回显内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
cloudgamer出品ImageZoom 图片放大效果
Apr 01 Javascript
自己动手制作jquery插件之自动添加删除行功能介绍
Oct 14 Javascript
javascript中的void运算符语法及使用介绍
Mar 10 Javascript
JavaScript获取onclick、onchange等事件值的代码
Jul 22 Javascript
js弹出div并显示遮罩层
Feb 12 Javascript
js实现根据身份证号自动生成出生日期
Dec 15 Javascript
js 判断一组日期是否是连续的简单实例
Jul 11 Javascript
利用纯JS实现像素逐渐显示的方法示例
Aug 14 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
Dec 07 Javascript
mpvue性能优化实战技巧(小结)
Apr 17 Javascript
Vue数字输入框组件的使用方法
Oct 19 Javascript
使用Vant完成Dialog弹框案例
Nov 11 Javascript
小程序使用分包的示例代码
Mar 23 #Javascript
用JS实现选项卡
Mar 23 #Javascript
vscode 配置vue+vetur+eslint+prettier自动格式化功能
Mar 23 #Javascript
云服务器部署Node.js项目的方法步骤(小白系列)
Mar 23 #Javascript
vue ssr+koa2构建服务端渲染的示例代码
Mar 23 #Javascript
详解webpack-dev-middleware 源码解读
Mar 23 #Javascript
vscode调试node.js的实现方法
Mar 22 #Javascript
You might like
德生PL990,目前市面上唯一一款便携式插卡蓝牙全波段高性能收音机
2021/03/02 无线电
PHP基于imap获取邮件实例
2014/11/11 PHP
WordPress迁移时一些常见问题的解决方法整理
2015/11/24 PHP
php 如何设置一个严格控制过期时间的session
2017/05/05 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
js日期相关函数总结分享
2013/10/15 Javascript
动态加载dtree.js树treeview(示例代码)
2013/12/17 Javascript
js点击button按钮跳转到另一个新页面
2014/10/10 Javascript
Bootstrap 最常用的JS插件系列总结(图片轮播、标签切换等)
2016/07/14 Javascript
jQuery得到多个值只能用取Class ,不能用取ID的方法
2016/12/04 Javascript
深入解析js轮播插件核心代码的实现过程
2017/04/14 Javascript
MUI实现上拉加载和下拉刷新效果
2017/06/30 Javascript
mpvue 如何使用腾讯视频插件的方法
2018/07/16 Javascript
新年快乐! javascript实现超级炫酷的3D烟花特效
2019/01/30 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
2019/09/19 Javascript
nuxt配置通过指定IP和端口访问的实现
2020/01/08 Javascript
[00:28]DOTA2北京网鱼队选拔赛
2015/04/08 DOTA
Python实现的Kmeans++算法实例
2014/04/26 Python
Python在信息学竞赛中的运用及Python的基本用法(详解)
2017/08/15 Python
Python使用requests发送POST请求实例代码
2018/01/25 Python
Python定时发送消息的脚本:每天跟你女朋友说晚安
2018/10/21 Python
简单了解django orm中介模型
2019/07/30 Python
html5视频自动横过来自适应页面且点击播放功能的实现
2020/06/03 HTML / CSS
电气工程及其自动化学生实习自我鉴定
2013/09/19 职场文书
《掌声》教学反思
2014/02/23 职场文书
研究生考核个人自我鉴定
2014/03/27 职场文书
2014年化验员工作总结
2014/11/18 职场文书
工作推荐信模板
2015/03/25 职场文书
导游词之吉林花园山
2019/10/17 职场文书
Nginx搭建rtmp直播服务器实现代码
2021/03/31 Servers
MySQL系列之十五 MySQL常用配置和性能压力测试
2021/07/02 MySQL
SpringBoot整合Mybatis Generator自动生成代码
2021/08/23 Java/Android
Nginx+Tomcat负载均衡集群的实现示例
2021/10/24 Servers
Python何绘制带有背景色块的折线图
2022/04/23 Python
什么是css原子化,有什么用?
2022/04/24 HTML / CSS
Win11 25163.1010更新补丁KB5016904推送,测试服务验证管道(附更新修复汇总)
2022/07/23 数码科技