通过input file拿本地图片并显示和上传

346 阅读1分钟

GIF 2021-9-24 星期五 10-13-36.gif

<template>
  <div class="box">
    <div :class="imgUrl ? 'haveupimg' : 'upimg_box'">
      <span>+</span>
      <input
        ref="avatarInput"
        type="file"
        accept="image/*"
        class="upimg"
        @change="uploadFile($event)"
      >
    </div>
    <div class="res_box">
      <div v-if="imgUrl" class="coutot_box">
        <img :src="imgUrl" alt="">
        <div class="coutot" @click="upimg">抠图</div>
      </div>
    </div>
  </div>
</template>

通过base64显示图片

  data() {
    return {
      imgUrl: null,
      file: '',
    }
  },
  methods: {
    uploadFile(e) {
      var reads = new FileReader()
      var file = e.target.files[0]
      this.file = file
      reads.readAsDataURL(file)
      reads.onload = (e) => {
        this.imgUrl = e.target.result
      }
    },

传给后台转化成file格式(代码如下)

image.png

image.png

       upimg(e) {
          var formData = new FormData()
          formData.append('file', this.file)
          axios({
            method: 'post',
            url: process.env.VUE_APP_BASE_API + '/tts/cutImage',
            data: formData
          }).then((res) => {
            console.log(res)
          })
        },
      }