图片粘贴上传

<template>
  <div class="box">
  <div id="preview" style="align-items:center;justify-content:center;" class="box1" v-on:paste="handlePaste">
      <span>将图片按Ctrl+V 粘贴至此处</span>
  </div>
  <button
        v-on:click="uploadPlans"
      >上传文件</button>
      <button @click="deleteImg">删除</button>
</div>  

</template>
<script>
export default {
  name: 'ScreenShot',
  data() {
    return {
      event:null
    }
  },

  methods: {
     // 监听粘贴操作
    handlePaste(event) {
      console.log(event,'event')
      const items = (event.clipboardData || window.clipboardData).items;
      console.log(event.clipboardData,window.clipboardData,'sddasda')
      let file = null;

      if (!items || items.length === 0) {
        this.$message.error("当前浏览器不支持本地");
        return;
      }
      // 搜索剪切板items
      for (let i = 0; i < items.length; i++) {
        if (items[i].type.indexOf("image") !== -1) {
          file = items[i].getAsFile();
          break;
        }
      }
      console.log(file,'file')
      if (!file) {
        this.$message.error("粘贴内容非图片");
        return;
      }
      // 此时file就是我们的剪切板中的图片对象
      // 如果需要预览,可以执行下面代码
      const reader = new FileReader();
      reader.onload = event => {
        preview.innerHTML = `<img id='imgss' style='width: 300px;height: 300px;' src="${event.target.result}">`;
      };
      reader.readAsDataURL(file);
      this.file = file;
    },
    // 删除
    deleteImg(){
      document.getElementById('imgss').remove()
      document.getElementById('preview').innerHTML=`<span>将图片按Ctrl+V 粘贴至此处</span>`
    },  
    // 上传文件成功后回调
     uploadPlans() {
      let file = this.file;
      console.log(file,'323232')
      console.log(this.type,'this.type')
      if (!file) {
        this.$message.error("请粘贴图片后上传");
        return;
      }
      this.loading = true;
      let form = new FormData();
      form.append("file", file);
      form.append("type", this.type);
    //uploadCertificate是封装的axios请求,自己根据需求传参
      uploadCertificate(form)
        .then(data => {
          if (data.data && data.data.success) {
            this.certificate_pic = data.data.data.source;
            this.$message.success(this.name + "上传成功!");
          } else {
            this.$message.error(this.name + "上传失败!");
          }
        }).catch(() => {});
    },

  }
}
</script>
<style scoped>
.box1{
  width: 300px;
  height: 300px;
  border: 2px dashed  #000000;
  border-radius: 5px;
  display: flex;
}

</style>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值