vue实现粘贴截图上传图片

vue实现粘贴截图上传图片

当初提出这个需求的时候,可把我难住了,在网上各种搜索,大多数都是利用富文本的粘贴功能,但是富文本大多都有工具栏,想偷懒的我就放弃了😁。代码如下(已做精简)!

html

<div class="box">
  <div id="preview" v-on:paste="handlePaste">
      <span>将图片按Ctrl+V 粘贴至此处</span>
  </div>
  <el-button
        v-on:click="uploadPlans"
      >上传文件</el-button>
</div>  

js

 // 监听粘贴操作
    handlePaste(event) {
      const items = (event.clipboardData || window.clipboardData).items;
      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;
        }
      }
      if (!file) {
        this.$message.error("粘贴内容非图片");
        return;
      }
      // 此时file就是我们的剪切板中的图片对象
      // 如果需要预览,可以执行下面代码
      const reader = new FileReader();
      reader.onload = event => {
        preview.innerHTML = `<img src="${event.target.result}">`;
      };
      reader.readAsDataURL(file);
      this.file = file;
    },
    //上传文件成功后回调
     uploadPlans() {
      let file = this.file;
      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(() => {});
    },

这只是最基本的功能实现代码,自己酌情添加需求即可。完成结果如下,仅仅支持截图上传,如qq、微信、钉钉等应用截图后直接粘贴即可。
在这里插入图片描述
在这里插入图片描述

  • 12
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
Vue2中实现截图粘贴功能,可以通过以下步骤来实现: 1. 首先,需要在Vue项目中引入一个用于处理图片的库,比如`clipboard-image`或者`vue-clipboard2`。可以使用npm或者yarn进行安装。 2. 在需要使用截图粘贴功能的组件中,引入所需的库,并在`mounted`钩子函数中初始化相关配置。 3. 在模板中添加一个用于接收粘贴图片的容器,比如一个`div`元素。 4. 在组件的方法中,监听粘贴事件,并获取粘贴的图片数据。 5. 将获取到的图片数据进行处理,可以将其显示在页面上或者上传到服务器。 下面是一个简单的示例代码: ```vue <template> <div> <div ref="pasteContainer"></div> <img v-if="imageData" :src="imageData" alt="Pasted Image"> </div> </template> <script> import ClipboardImage from 'clipboard-image'; export default { mounted() { const pasteContainer = this.$refs.pasteContainer; // 初始化粘贴图片处理库 const clipboardImage = new ClipboardImage(pasteContainer); // 监听粘贴事件 clipboardImage.onPaste((data) => { // 处理粘贴的图片数据 this.handleImageData(data); }); }, data() { return { imageData: null, }; }, methods: { handleImageData(data) { // 可以根据需求对图片数据进行处理,比如显示在页面上或者上传到服务器 this.imageData = data; }, }, }; </script> <style> /* 样式可以根据需求进行调整 */ </style> ``` 请注意,以上代码只是一个简单的示例,具体实现方式可能会因项目需求而有所不同。你可以根据实际情况进行调整和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值