post 上传文件

这是一个关于Vue.js组件的实现,用于图片上传和预览。组件使用了el-upload元素,支持.jpeg, .png, .jpg格式文件,并在上传前触发before-upload回调。当图片上传成功后,会触发'success'事件并返回mediaId。同时,组件还具有显示默认图片的能力,根据默认Url更新预览图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<template>
  <div style="line-height:12px">
    <el-upload
      class="avatar-uploader"
      v-bind='$attrs'
      :action="'/wsj'"
      :before-upload="fileUpload"
      accept=".jpeg,.png,.jpg"
      :show-file-list="false"
      v-loading="loading"
      >
      <!-- :limit="1" :action="'/api' + this.$api.mediaImage" :show-file-list="false" -->
      <img v-if="imageUrl && showImage" :src="imageUrl" class="avatar" style="width: 64px;height:64px"/>
      <!-- <el-button v-else type="primary" :plain="true">点击上传图片</el-button> -->
      <i v-else class="el-icon-plus avatar-uploader-icon"></i>
    </el-upload>
  </div>
</template>
<script>
import { strategyUpload } from "@/api/image"
export default {
  props: {
    defaultUrl: {
      default: '',
      type: String
    },
    showImage: {
      default: true,
      type: Boolean
    }
  },
  data () {
    return {
      loading: false,
      headers: {
        Authorization: 'Bearer ' + localStorage.getItem('token')
      },
      imageUrl: ''
    }
  },
  methods: {
    fileUpload(file) {
      this.loading = true;
      console.log(file, file.url)
      const data = new FormData()
      data.append('image', file);
      strategyUpload(data).then(res => {
        if (res.code == 0) {
          this.imageUrl = res.data.mediaId;
          this.$emit('success', res.data.mediaId)
          this.loading = false
        } else {
          this.loading = false
          this.$message.error('请重试', res.msg)
        }
      })
    },
  },
  mounted () {
  },
  watch: {
    defaultUrl(val) {
      this.imageUrl = val
    }
  }
}
</script>
<style lang="scss" scoped>
.avatar-uploader .el-upload {
    border: 1px dashed #d9d9d9;
    border-radius: 6px;
    cursor: pointer;
    position: relative;
    overflow: hidden;
  }
  .avatar-uploader .el-upload:hover {
    border-color: #409EFF;
  }
  .avatar-uploader-icon {
    font-size: 28px;
    color: #8c939d;
    width: 64px;
    height: 64px;
    line-height: 64px;
    text-align: center;
  }
  .avatar {
    width: 64px;
    height: 64px;
    display: block;
  }
</style>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值