前段时间项目需求中涉及到上传多张图片 当条信息查看时可预览大图功能,项目框架vue.js+elementUI,抽时间在此做个整理记录,如有更好的方法 欢迎大家互相交流

页面列表更多操作-修改-先选择图片 点击确定时上传所有,查看-点击图片 就是查看图片大图

上传多张图片: el-upload组件

查看-大图预览左右切换:el-image组件

开发查看-大图预览时 发现个问题:用的组件页面没有效果,经排查是因为之前项目引的elementUI js css版本过旧 没有包含el-image组件,大家开发时候注意下

效果图如下:

直接贴代码如下:

里面有一些是项目的公共方法就不细写了,大家可参考图片上传代码的思路和步骤,具体请以自己的项目为准

// css 图片个数够5张时 上传按钮框隐藏

.disUoloadSty .el-upload--picture-card{

display:none;/*上传按钮隐藏*/}

action="#"

ref="upload"multiple

list-type="picture-card":auto-upload="false"accept=".jpeg,.jpg,.png,":file-list="fileLists":on-preview="handlePictureCardPreview":limit="5":on-change="OnChange":on-remove="handleRemove":class="{disUoloadSty:hideUploadEdit}"

>

注:最多上传5张图片

//查看时 用的elementUI el-image组件 具体用法可查看elementUI官网

//修改-大图预览框

dialogImgVisible: false,大图预览框

hideUploadEdit:false,//图片个数设置 超过5张为true

//上传文件之前的钩子

OnChange:function (file, fileList) {

console.log(file)var testmsg = file.name.substring(file.name.lastIndexOf('.')+1)const extension = testmsg === 'jpeg'

const extension2 = testmsg === 'jpg'

const extension3 = testmsg === 'png'

const isLt2M = file.size / 1024 / 1024 < 10

if(!isLt2M){this.$message({

type:'warning',

message:'文件大小请限制在10M以内'});

}if(!extension && !extension2 && !extension3) {this.$message({

message:'上传文件只能是 jpeg、jpg、png格式!',

type:'warning'});

}this.fileLists.push(file)this.hideUploadEdit = fileList.length >= 5

return (extension || extension2 || extension3) &&isLt2M;

},//提交上传图片前,和其他参数

UploadImg:function(){var _this = thislet fd= newFormData()

let imgIDs=[]

_this.fileLists.forEach(function(item,index){

//判断是新选择的图片 还是已经上传成功的if(item.raw){

fd.append('file',item.raw)

}else{

imgIDs.push(item.id)

}

})if(imgIDs.length >0) fd.append('imgIDs',imgIDs)

//将其他参数一起放到formData中,removeNullStr是一个去除null的公共方法,可参考我这个博客https://www.cnblogs.com/hanhanours/p/13602396.htmlfor(key inremoveNullStr(_this.form)){

fd.append(key,_this.form[key])

}returnfd;

},//提交表单

submitForm: function (formName) {var _this = this;_submit(_this, _this.urls.updateUrl, formName, function () {

_this.dialogFormVisible= false;

_this.dialogFormVisible2= false;

}, _this.UploadImg())},//修改-大图预览

handlePictureCardPreview:function(file){var _this = this;

_this.dialogImgVisible= true;

//这里项目中做了弹框设置,判断是新选择的图片url 还是已经存在的图片urlif(file.raw){

_this.dialogImageUrl=file.url;

}else{

_this.dialogImageUrl=file.urls;

}

},//修改-删除图片

handleRemove: function(file, fileList) {var _this = this_this.fileLists=fileList

_this.hideUploadEdit= fileList.length >= 5},

//获取图片路径

getImgLists:function (type,id) {var _this = thislet ImgFileList=[];

axios.post(_this.urls.GetImgList,{type:type,routeRecordID:id}).then(function (res) {if(res.data.IsSuccess){

ImgFileList=res.data.Data;

let FilePathResult=[]

let previewPath=[]for(varitem of ImgFileList){

FilePathResult.push({

name:item.FileName,

id:item.ImgID,

url:'/ProjectRouteRecordGas/View?path='+item.SmallFilePath, //缩略图

urls:'/ProjectRouteRecordGas/View?path='+item.BigFilePath //大图

});

//存放大图路径 查看-预览大图会用到

previewPath.push('/ProjectRouteRecordGas/View?path='+item.BigFilePath)

}

_this.fileLists=FilePathResult

_this.previewList=previewPath

_this.hideUploadEdit= _this.fileLists.length >= 5}else{

_this.open(res.data.Message,'错误提示', 'error')

}

})

},//查看-大图预览

getPreviewImgList:function(index) {

let arr=[]

let i= 0;for(i;i < this.previewList.length;i++){

arr.push(this.previewList[i+index])if(i+index >= this.previewList.length-1){

index= 0-(i+1);

}

}returnarr;

},

elementui展示多张图片_elementUI 上传多张图片并预览大图左右切换相关推荐

  1. 【微信小程序云开发】1分钟学会实现上传、下载、预览、删除图片,并且以九宫格展示图片

    大家好,我叫小秃僧 这篇文章是讲解云开发如何上传.下载.预览.删除图片,并且以九宫格展示图片的功能 学习目录 1. 实现效果 2.JavaScript代码 3.wxml代码 4.wxss代码 1. 实 ...

  2. SpringBoot+MongoDB GridFS文件上传、下载、预览实战

    SpringBoot + MongoDB GridFS 随着web 3.0的兴起,数据的形式不局限于文字,还有语音.视频.图片等.高效存储与检索二进制数据也成为web 3.0必须要考虑的问题.然而这种 ...

  3. dropzonejs中文翻译手册 DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库....

    http://wxb.github.io/dropzonejs.com.zh-CN/dropzonezh-CN/ 由于项目需要,完成一个web的图片拖拽上传,也就顺便学习和了解了一下前端的比较新的技术 ...

  4. 文件上传,下载,预览,删除(File),分页接口

    文件上传,下载,预览,删除(File) 1.公共参数方法 1.1公共返回类型定义 1.2 分页接口 1.3公共实体类 1.4 公共的 mapper.java/xml(都放在一起) 1.4.1 File ...

  5. html5 图片上传,支持图片预览、压缩、及进度显示,兼容IE6+及标准浏览器

    原文:html5 图片上传,支持图片预览.压缩.及进度显示,兼容IE6+及标准浏览器 以前写过上传组件,见 打造 html5 文件上传组件,实现进度显示及拖拽上传,兼容IE6+及其它标准浏览器,对付一 ...

  6. [html] 图片上传时实现本地预览功能的原理是什么?

    [html] 图片上传时实现本地预览功能的原理是什么? 通过HTML5 File API读取用户上传的图片,生成一个image对象显示到页面 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容 ...

  7. 小程序 图片上传php后台,微信小程序图片选择、上传到服务器、预览(PHP)实现实例...

    微信小程序图片选择.上传到服务器.预览(php)实现实例 小程序实现选择图片.预览图片.上传到开发者服务器上 后台使用的tp3.2 图片上传 请求时候的header参考时可以去掉(个人后台验证权限使用 ...

  8. php 点击选择图片上传,微信小程序图片选择、上传到服务器、预览(PHP)实现实例...

    微信小程序图片选择.上传到服务器.预览(PHP)实现实例 小程序实现选择图片.预览图片.上传到开发者服务器上 后台使用的tp3.2 图片上传 请求时候的header参考时可以去掉(个人后台验证权限使用 ...

  9. 小程序自定义上传富文本并预览

    上传时的效果 预览时的效果 代码如下(可直接全部复制查看,注意:下面上传的接口需要改成你们自己的服务器上传接口) <view class="col"><text& ...

最新文章

  1. 关于Adodb.Stream的使用说明
  2. Hibernate中的实体映射
  3. iOS开发 - 百度地图后台持续定位
  4. HTTP常用状态码说明
  5. 归并排序验证性实验_攻略 | 10 大经典排序算法(Python 版)
  6. Linux(CentOS 7)安装docker
  7. 微课|玩转Python轻松过二级(3.4节):集合操作与应用
  8. php 用户之间通信,PHP,javascript,ajax-2位用户之间的通信
  9. 基于ARM的嵌入式Linux应用程序开发
  10. TMS320F280049C 学习笔记21 交叉开关 Crossbar (X-BAR)
  11. 学术研究如何选定方向,确定论文题目
  12. 适用于macOS 10.15系统的暗黑破坏神2 mac版
  13. Ubuntu 安装Chromium浏览器
  14. 计算机键盘符号称呼,电脑键盘上特殊符号和标点符号名称的输入方法汇总
  15. Android 开发技术周报 Issue#274
  16. MySQL之高性能的索引策略(索引优化)
  17. signal信号捕捉
  18. 嵌入式开发中,嵌入式硬件和软件有什么区别?
  19. ajax 一个完整的ajax请求
  20. MySQL 分库拆表方案

热门文章

  1. 2022年中国冰雪旅游产业发展现状分析:预计2021-2022冰雪季旅游人数将达到3.05亿人次[图]
  2. VMware CentOS镜像 虚拟机装机 保姆级教程
  3. 如何免费生成二维码图片?二维码在线怎么免费制作?
  4. 本科课程【计算机组成原理】 - 存储器工作原理实验
  5. Pytorch填充、步幅及多通道输入输出的理论分析及代码实现
  6. js join 方法
  7. 如何启用计算机端口,Win7系统下开启计算机端口的方法
  8. .tpl 文件高亮配置
  9. InSAR处理软件+时间序列分析软件
  10. [直播]2021 信创“大比武”基础办公应用开发赛道 - 总决赛