vue二次封装van-uploader上传图片组件(移动端)

在这里插入图片描述
template

<template>
  <van-uploader
    v-model="uploadData"
    //是否可以多选
    :multiple="multiple"
    :after-read="afterRead"
    //最大上传数量
    :max-count="maxCount"
    // 最大上传大小
    :max-size="1024 * 1024 * 10"
    :before-read="beforeRead"
    @oversize="onOversize"
  />
</template>

js

<script>
export default {
  props: {
    // 文件列表
    fileList: {
      type: Array,
      default: () => {
        return [];
      }
    },
    // 上传数量
    maxCount: {
      type: Number,
      default: 9
    },
    // 是否开启多图选择
    multiple: {
      type: Boolean,
      default: true
    }
  },
  data () {
    return {
      uploadData: this.fileList
    };
  },
  methods: {
    // 上传后的回调获取对应file对象
    afterRead (file) {
      this.$emit('uploadResult', file);
    },
    // 上传
    beforeRead (file) {
      // 多图上传file为一个数组
      // 多图上传流程
      if (Array.isArray(file)) {
        for (let i = file.length - 1; i >= 0; i--) {
          const imageType = /^image/(jpeg|png|jpg)$/.test(file[i].type);
          if (!imageType) {
            file.splice(i, 1);
            this.$tipMessage('warning', '上传图片格式只能是 JPEG|PBG|JPG 格式!');
          }
        }
        return true;
      } else {
        // 单图上传流程
        const imageType = /^image/(jpeg|png|jpg)$/.test(file.type);
        if (!imageType) {
          this.$tipMessage('warning', '上传图片格式只能是 JPEG|PBG|JPG 格式!');
          return false;
        }
        return true;
      }
    },
    // 监听上传图片大小
    onOversize (file) {
      this.$tipMessage('warning', '上传图片不能超过10M');
    }
  }
};
</script>

在这里插入图片描述

原文地址:https://blog.csdn.net/JunVei/article/details/126550634

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_36948.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注