From 1a0f37a2dc03bfdecb209c24b4694b486ac2a8c5 Mon Sep 17 00:00:00 2001
From: RuoYi <yzz_ivy@163.com>
Date: Thu, 24 Apr 2025 18:19:16 +0800
Subject: [PATCH] 富文本复制粘贴图片上传至url

---
 ruoyi-ui/src/components/Editor/index.vue |   27 +++++++++++++++++++++++++--
 1 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/ruoyi-ui/src/components/Editor/index.vue b/ruoyi-ui/src/components/Editor/index.vue
index b0487ff..66209ff 100644
--- a/ruoyi-ui/src/components/Editor/index.vue
+++ b/ruoyi-ui/src/components/Editor/index.vue
@@ -18,6 +18,7 @@
 </template>
 
 <script>
+import axios from "axios";
 import Quill from "quill";
 import "quill/dist/quill.core.css";
 import "quill/dist/quill.snow.css";
@@ -135,6 +136,7 @@
             this.quill.format("image", false);
           }
         });
+        this.Quill.root.addEventListener('paste', this.handlePasteCapture, true);
       }
       this.Quill.clipboard.dangerouslyPasteHTML(this.currentValue);
       this.Quill.on("text-change", (delta, oldDelta, source) => {
@@ -192,8 +194,29 @@
     handleUploadError() {
       this.$message.error("图片插入失败");
     },
-  },
-};
+    // 复制粘贴图片处理
+    handlePasteCapture(e) {
+      const clipboard = e.clipboardData || window.clipboardData;
+      if (clipboard && clipboard.items) {
+        for (let i = 0; i < clipboard.items.length; i++) {
+          const item = clipboard.items[i];
+          if (item.type.indexOf('image') !== -1) {
+            e.preventDefault();
+            const file = item.getAsFile();
+            this.insertImage(file);
+          }
+        }
+      }
+    },
+    insertImage(file) {
+      const formData = new FormData();
+      formData.append("file", file);
+      axios.post(this.uploadUrl, formData, { headers: { "Content-Type": "multipart/form-data", Authorization: this.headers.Authorization } }).then(res => {
+        this.handleUploadSuccess(res.data);
+      })
+    }
+  }
+}
 </script>
 
 <style>

--
Gitblit v1.9.3