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

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>

在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Vue Vant-UI是Vue.js的一个移动端UI组件库,是一个轻量级的、高效的组件库,非常适合用于移动端前端开发。其中,Van-UploaderVant-UI的上传文件组件,允许用户将文件上传到服务器或第三方存储库。 在实现头像图片上传时,我们可以采用如下步骤: 1. 首先需要安装Vant-UI组件库。可以通过npm命令进行安装,输入如下代码:npm install vant --save 2. 在Vue项目中引入Vant-UI组件库。在main.js文件中写入如下代码:import Vant from 'vant' import 'vant/lib/vant-css/index.css' Vue.use(Vant) 3. 在需要使用上传头像的组件中引入Van-Uploader组件,并编写如下代码: <template> <van-uploader :show-upload="false" :before-read="beforeRead" :after-read="afterRead" > <van-icon name="photograph" /> </van-uploader> </template> <script> export default { data() { return { file: '' } }, methods: { beforeRead(file) { if (file.type !== 'image/jpeg' && file.type !== 'image/png') { this.$toast('请上传 JPG/PNG 格式的图片'); return false; } if (file.size > 500 * 1024) { this.$toast('图片大小不能超过 500KB'); return false; } }, afterRead(file) { this.file = URL.createObjectURL(file.file); } } } </script> 4. 上面的代码中,我们主要使用了Van-Uploader组件的before-read和after-read两个事件回调函数。before-read为上传文件之前的校验函数,例如判断文件类型和文件大小是否符合要求,这里我们限制了文件类型为JPG/PNG并且大小不能超过500KB。after-read则表示读取文件后的回调函数,我们将上传的文件读取为本地链接并保存到file属性中,以便进行后续处理。 5. 最后,将file属性传递给后端进行处理,例如将该链接保存到服务器或者上传到第三方存储库中。 总之,使用Van-Uploader组件可以轻松实现头像图片上传功能,同时也可以根据需求进行个性化的定制和扩展,是一个非常实用且易于使用的组件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别改我bug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值