element-ui图片上传组件查看和限制方式

 更新时间:2023年03月28日 10:13:48   作者:TianNicholas  
这篇文章主要介绍了关于element-ui图片上传组件查看和限制方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

element-ui图片上传组件查看和限制

element-ui经常遇到图片上传,然后编辑查看限制上传个数和上传提示

  • 1、limit上传个数限制配合on-exceed属性使用
  • 2、上传之前提示图片大小限制属性before-upload
  • 3、上传带参数data
  • 4、上传成功on-success和移除on-remove
  • 5、file-list属性展示的列表数组,查看也是设置这个

html的代码

<el-upload 
    :limit="1" 
    :on-exceed="config.exceed" ref="upload" class="upload-demo" 
    :before-upload="config.onBeforeUpload" 
    :on-success="config.handleAvatarSuccess" 
    :data="config.dataParam" 
    :action="config.actionUrl"
     :on-remove="config.handleRemove"
      :file-list="config.fileList2" //保存当前图片对象数组
      :multiple="false" 
      :show-file-list="true" 
      list-type="picture">
            <el-button size="small" type="primary">点击上传</el-button>
  </el-upload>

配置信息js 代码

config: {
        dataParam: {
          bizType: 3,
          useType: 2
        },
        actionUrl: 'api/base-fdfs/fdfs/public/upload',
        exceed:()=>{
            this.$alert('请删除后再上传', '异常提示', {
              confirmButtonText: '确定',
              type: 'warning'
            });
        },
        handleRemove: (file,fileList) => {
          this.form.picture=''
          this.config.fileList2=[] //删除此数组内的图片对象
        },
        onBeforeUpload: (file) => {
          const isIMAGE = ((file.type === 'image/jpeg') || (file.type === 'image/png') || (file.type === 'image/bmp'));
          if (!isIMAGE) {
            this.$alert('上传文件只能是图片格式(jpeg/png/bmp)', '异常提示', {
              confirmButtonText: '确定',
              type: 'warning'
            });
            return false
          }
          if(file.size/1024/1024>5){
            console.log(file.size)
            this.$alert('图片不能大于5M', '异常提示', {
              confirmButtonText: '确定',
              type: 'warning'
            });
            return false
          }
          return true
        },
        handleAvatarSuccess: (res, file) => {
          this.form.repairImages = file.response.data
        },
        fileList2: [],
      },

查看的时候还需给file-list数组设置,展示图片

    let obj={}
    this.config.fileList2=[]
    this.$set(obj,'name','file');
    this.$set(obj,'url',response.data.picture);
    this.config.fileList2.push(obj)  

清除文件列表,上传组件变初始状态 

this.$refs.upload.clearFiles() //清除图片

element-ui限制一张图片上传

在这里插入图片描述

需求描述

在做图片上传组件的时候 有时候需求回要求只能上传一张图片

bug:element-ui在上传完一张图片后上传按钮还会存在 虽然可以用自带的limt属性加以限制 但是上传按钮依然会存在 且存入数组的值依然会增加

在这里插入图片描述

解决

可以判断上传后数组的length来控制图片上传的样式 让其上传一张后隐藏上传按钮 达到控制图片上传的数量需求

<el-form-item label="礼包主图" prop="goodsimage" :required="true">
        <el-upload
          :class="{ disabled: uploadDisabled }"   //这里动态控制样式
          :limit="1"
          ref="picUpload"
          class="pic-div"
          action="'xxxxxxx'"
          :with-credentials="true"
          list-type="picture-card"
          :on-remove="removePic"
          :on-change="handleEditChange"
          :file-list="goodsimage"
          :on-exceed="beyond"
        >
          <div class="el-upload file-upload-container" @click.stop="popFileUpload('0')">
            <i class="el-icon-plus"></i>
          </div>
        </el-upload>
      </el-form-item>
 // 隐藏图片上传按钮
    uploadDisabled() {
      return this.goodsimage.length > 0   //判断图片上传的数量动态控制按钮隐藏与显示
    },
<style>
.disabled .el-upload--picture-card {
  display: none;
}
</style>

最终效果

在这里插入图片描述

在这里插入图片描述

礼包视频也是如此要求仅限上传1个视频 由于是button按钮 俺就直接使用v-if判断视频的length来控制视频上传按钮的显示与隐藏

<el-button ***v-if="this.goodsvideo.length < 1"*** class="file-upload-btn-container" @click.stop="popFileUpload('1')" size="small" type="primary">点击上传</el-button >

在这里插入图片描述

上传视频后按钮隐藏

在这里插入图片描述

em…

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 前端实现简单的sse封装方式(React hook Vue3)

    前端实现简单的sse封装方式(React hook Vue3)

    这篇文章主要介绍了前端实现简单的sse封装方式(React hook Vue3),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • vue在自定义组件中使用v-model进行数据绑定的方法

    vue在自定义组件中使用v-model进行数据绑定的方法

    这篇文章主要介绍了vue在自定义组件中使用v-model进行数据绑定的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Nuxt pages下不同的页面对应layout下的页面布局操作

    Nuxt pages下不同的页面对应layout下的页面布局操作

    这篇文章主要介绍了Nuxt pages下不同的页面对应layout下的页面布局操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • VUE页面中通过双击实现复制表格中内容的示例代码

    VUE页面中通过双击实现复制表格中内容的示例代码

    这篇文章主要介绍了VUE页面中通过双击实现复制表格中内容,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • Vue前端项目自适应布局的简单方法

    Vue前端项目自适应布局的简单方法

    最近项目开发中遇到一个需求,需要实现宽度自动适应,所以下面这篇文章主要给大家介绍了关于Vue前端项目自适应布局的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • Vue函数式组件专篇深入分析

    Vue函数式组件专篇深入分析

    Vue提供了一种称为函数式组件的组件类型,用来定义那些没有响应数据,也不需要有任何生命周期的场景,它只接受一些props来显示组件,下面这篇文章主要给大家介绍了关于Vue高级组件之函数式组件的使用场景与源码分析的相关资料,需要的朋友可以参考下
    2023-01-01
  • ant design vue的form表单取值方法

    ant design vue的form表单取值方法

    这篇文章主要介绍了ant design vue的form表单取值方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Vue树表格分页的实现方法详解

    Vue树表格分页的实现方法详解

    这篇文章主要介绍了Vue树表格分页的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-10-10
  • 如何快速上手Vuex

    如何快速上手Vuex

    本文主要介绍了Javascript中Vuex的相关知识。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • Vue 3 + Element Plus树形表格全选多选及子节点勾选的问题解决方法

    Vue 3 + Element Plus树形表格全选多选及子节点勾选的问题解决方

    在本文中,我们解决了Vue 3和Element Plus树形表格中的全选、多选、子节点勾选和父节点勾选等常见问题,通过逐步实现这些功能,您可以构建功能强大且用户友好的树形表格组件,以满足各种数据展示需求,对Vue 3 Element Plus树形表格相关知识感兴趣的朋友一起看看吧
    2023-12-12

最新评论