上传图片组件

<template>
  <div>
    <div class="box">
      <el-upload
        class="avatar-uploader"
        :auto-upload="false"
        action="#"
        :file-list="fileList"
        :limit="1"
        :show-file-list="false"
        :on-change="handleAvatarSuccess"
        :before-upload="beforeAvatarUpload">
        <img v-if="imgUrl" :src="imgUrl" class="avatar">
        <div v-else>
          <i class="el-icon-plus avatar-uploader-icon"></i>
          <!-- <div class="text-upload">点击上传</div> -->
        </div>
      </el-upload>
      <div class="text-tip">(只能上传jpg/png文件,且不超过500kb)</div>
    </div>
  </div>
</template>

<script>
  import { uploadFile } from "@/api/messages/eventManage";
  export default {
    data() {
      return {
        imgUrl: '',
        fileList: []
      }
    },
    methods: {
      // 上传图片
      handleAvatarSuccess(res, file) {
       let formData = new FormData();
       formData.append('file', file[0].raw);
        uploadFile(formData).then(res => {
          this.imgUrl = res.data;
          this.$emit('imgUrl', this.imgUrl); // 触发事件,将imgUrl传递给父组件
          this.fileList = [];
        })
      },
      beforeAvatarUpload(file) {
        // const isJPG = file.type === 'image/jpeg';
        const isJPGorPNG = file.type === 'image/jpeg' || file.type === 'image/png';
        const isLt500kb = file.size / 1024 < 500;

        if (!isJPGorPNG) {
          this.$message.error('上传头像图片只能是 JPG/PNG 格式!');
        }
        if (!isLt500kb) {
          this.$message.error('上传头像图片大小不能超过 500kb!');
        }
        return isJPGorPNG && isLt500kb;
      },
    }
  }
</script>

<style lang="scss" scoped>
  .box{
    display: flex;
    align-items: center;
    .avatar-uploader {
      width: 90px;
      height: 90px;
      background: #F5F5F6;
      border-radius: 5px;
      border: 1px dashed #B5B5B5;
      cursor: pointer;
      position: relative;
      overflow: hidden;
      display: flex;
      justify-content: center;
      align-items: center;
      .text-upload {
        position: absolute;
      }
      .avatar {
        width: 90px;
        height: 90px;
        object-fit: cover;
        transform: translateY(6px);
        background: #F5F5F6;
        border-radius: 5px;
        border: 1px solid #B5B5B5;
        // width: 178px;
        // height: 178px;
        // display: block;
      }
    }
    .text-tip {
      font-size: 14px;
      color: #999999;
    }
  }
</style>
 

父组件:<UploadImg @imgUrl="getLogoUrl"></UploadImg>

    methods: {
      // 获取图片链接
      getLogoUrl(newImgUrl) {
        this.form.logoUrl = newImgUrl;
      },

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值