KindEditor4.1.10,支持粘贴图片

转载自https://blog.csdn.net/jimmy0021/article/details/73251406

我已经忘记我是不是从这个博主的那里找到的解决kindeditor粘贴图片的方法了,因为上次处理这个问题已经快半年了.以下是正文

KindEditor4.1.10,使得他能够在Chrome和IE11中直接粘贴复制的图片(比如通过截图工具把图片直接保存在剪切板中),然后调用上传URL上传图片

方法,修改kindeditor.js中的代码:

在5825行附近大概是下面这个样子的:

1 K(doc.body).bind(‘paste‘, function (e) {
2     if (self.pasteType === 0) {
3         e.stop();
4         return;
5     }  

在第1行和第2行之间插入:

  1 //处理IE11,Chrome粘贴图片上传
  2 function dopasteImg() {
  3     //debugger;
  4     var file = null;
  5     if (window.clipboardData) {//ie
  6
  7         if (clipboardData.files && clipboardData.files.length)//IE11
  8             file = clipboardData.files[0];
  9         else if (!clipboardData.getData("text") && !clipboardData.getData("url")) {
 10             alert("不能粘贴文件或图片,请使用IE11或者Chrome浏览器,或使用上传功能");
 11             return true;
 12         }
 13     } else {
 14         if (e.event.clipboardData.items)//chrome
 15         for (var i = 0; i < e.event.clipboardData.items.length; i++) {
 16             if (e.event.clipboardData.items[i].kind === "file") {
 17                 file = e.event.clipboardData.items[i];
 18                 break;
 19             }
 20         }
 21         if (file == null) {
 22
 23             if (!e.event.clipboardData.getData("url") && !e.event.clipboardData.getData("text")) {
 24                 alert("不能粘贴文件或图片,请使用IE11或者Chrome浏览器,或使用上传功能");
 25                 return true;
 26             }
 27         }
 28     }
 29     if (file) {
 30         if (!K.undef(self.allowImageUpload, true)) {
 31             alert("编辑器禁止上传图片,请与有关人员联系!");
 32             return true;
 33         }
 34         //获取File Blob
 35         //debugger;
 36         var blb;
 37         if (file.getAsFile) {//Chrome
 38             blb = file.getAsFile();
 39             if (blb.size === 0) {
 40                 alert("不能获取剪切板中的" + (file.type.indexOf("image/") === 0 ? "图像" : "文件")
 41                           +"\n如果是从OutLook中复制的,请换其他程序,如Word");
 42                 return true;
 43             }
 44             sendfile(blb, file.type);
 45         } else {
 46             var fr = new FileReader();
 47             if (fr.readAsArrayBuffer) {//ie
 48
 49
 50                 fr.onloadend = function (evt) {
 51                     blb = evt.target.result;
 52                     sendfile(blb, file.type);
 53                 }
 54
 55                 fr.readAsArrayBuffer(file);
 56             }
 57         }
 58         function sendfile(b, t) {
 59
 60             var xhr = new XMLHttpRequest();
 61             var formData = new FormData();
 62             var isImg = t.indexOf("image/") === 0;
 63             //formData.append(‘imgFile‘, file,"untitled." + t.split(‘/‘)[1]);
 64             //formData.append(‘imgFile‘, b);
 65             var myBlob = new Blob([b], { "type": t });
 66             formData.append(‘imgFile‘, myBlob, "untitled." + t.split(‘/‘)[1]);
 67             //formData.append(‘imgFile‘, b);
 68             formData.append(‘dir‘, isImg ? ‘image‘ : ‘file‘);
 69             xhr.open(‘POST‘, self.uploadJson);
 70             xhr.onreadystatechange = function () {
 71                 if (xhr.readyState == 4&&xhr.status == 200) {
 72                     // if (fn) {
 73                     var data = _trim(xhr.responseText);
 74                     //if (dataType == ‘json‘) {
 75                     data = _json(data);
 76                     if (data.error) {
 77                         if (typeof ($) !== "undefined" && $.messager && $.messager.alert) {
 78                             $.messager.alert(‘Error‘, data.message, ‘warning‘);
 79
 80                         } else {
 81                             alert(data.message);
 82                         }
 83                     } else {
 84                         //self.exec(‘insertimage‘, url, title, width, height, border, align);
 85                         if(K.undef(self.formatUploadUrl, true))
 86                             data.url =K.formatUrl(data.url, ‘absolute‘);
 87                         self.exec(‘insertimage‘, data.url, "from clipboard", undefined, undefined, undefined, undefined);
 88                     }
 89                     //}
 90                     // fn(data);
 91                     // }
 92                 }
 93             }
 94             xhr.send(formData);
 95         }
 96         return true;
 97     }
 98 }
 99 //debugger;
100 if (dopasteImg())
101     e.stop();
102       //处理粘贴结束5825  

亲测chrome有效

原文地址:https://www.cnblogs.com/tele-share/p/8983036.html

时间: 2024-11-06 15:28:28

KindEditor4.1.10,支持粘贴图片的相关文章

Ckeditor 中粘贴图片

我们在ckeditor 中有上传图片,但是实际使用中这种手动上传图片方式并不是很方便,而是复制或者截图粘贴图片. 这里我们实现主要是获取对应的粘贴事件. CKEDITOR.instances["editor1"].on('instanceReady', function(e) { this.document.on("paste", function(e) { var items = e.data.$.clipboardData.items; for(var i =

kindeditor扩展粘贴图片功能&amp;修改图片上传路径并通过webapi上传图片到图片服务器

前言 kindeditor是一个非常好用的富文本编辑器,它的简单使用我就不再介绍了. 而kindeditor却对图片的处理不够理想. 本篇博文需要解决的问题有两个: kindeditor扩展粘贴图片功能 kindeditor修改图片上传路径并通过webapi上传图片到图片服务器(支持分布式图片) 结果演示 1.扩展粘贴图片功能演示 2.修改图片上传路径演示: 我们的网站演示地址是:http://localhost:9393/ 我们的图片服务器地址是:http://localhost:9394/

div中粘贴图片并上传服务器 div中拖拽图片文件并上传服务器

应用简介:此文主要是描述如何在前端div中直接ctrl+v 粘贴图片,并上传到服务器,包括拖拽图片文件到div中 应用场景描述:用QQ或者其它切图软件截图,在指定的div中ctrl+v 粘贴并显示,点击上传按钮,图片上传到服务器.类似实现了此功能的网站有 知乎,强力建议博客园实现此功能,                     写博客时插入图片方便的多. 适用环境:本代码目前适用谷歌浏览器,其它浏览器需要稍微改良一下即可,问题不大. 开发环境:vs2015 mvc 不说废话了,开始吧: 1:首先

C# WinForm实现粘贴图片到PictureBox及复制PictureBox中的图片

本程序功能需要 PastePicture.dll 文件的支持,下载地址为:http://download.csdn.net/detail/jsjyyjs07/8907405 1.程序设计界面如下图: 操作方式为:按住快捷键Ctrl+V,鼠标点击一个PictureBox 完成图片的粘贴 按住快捷键Ctrl+C,鼠标点击一个PictureBox完成图片的复制 2.主要功能性代码如下: using PastePicture; ClipboardImage cImg = new ClipboardIma

实现复制或截图可直接粘贴图片

在很多富文本编辑器或者编辑框中添加图片,都是通过点击按钮-选择图片-上传的形式,这需要使用者先保存好图片. 在有些情况下,实现截图或复制图片后直接粘贴图片,让操作更简单. 例如,在textarea中粘贴图片,通过监听paste动作来获取粘贴板中的图片数据,并将图片上传到服务器上,获取图片的url后在指定的地方显示,一般是将图片插入textarea中光标所在的地方. 实现过程只需要一个js文件 var input = document.getElementsByTagName("textarea&

chrome及safari浏览器实现直接粘贴图片(纯JS)

相信大家在一些网站上看到通过QQ截图,然后粘贴图片就可以在网站实现预览该截图的功能,这么便捷的操作是不是非常利于用户的体验呢. 下面通过JQUERY进行实现这一个功能,并且实现上传该图片到后端服务器.主要利用的是HTML5的clipboardData及FileReader,目前支持chrome及safari浏览器. 1.粘贴事件绑定 首先进行绑定paste事件,触发paste事件时获取到剪贴板的内容 然后对内容进行过滤出文件为图片类型的内容,通过FileReader生成dataurl文件资源,将

js实现ctrl+v粘贴图片或是截图

浏览器环境:谷歌浏览器 1.ctrl+v粘贴图片都是监听paste时间实现的,复制的数据都存在clipboardData下面,虽然打印显示数据长度为0,但是还是可以获取数据的 2.打印clipboardData.items发现是一个DataTransferItem. 3.DataTransferItem有个getAsFile()的方法,可以获取文件 document.addEventListener('paste', function (event) { console.log(event);

kindeditor-4.1.10 ---文件上传

package com.zsplat.hcxg.commons.utils.web.servlet; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map;

Fckeditor实现WORD粘贴图片自动上传

在之前在工作中遇到在富文本编辑器中粘贴图片不能展示的问题,于是各种网上扒拉,终于找到解决方案,在这里感谢一下知乎中众大神以及TheViper. 通过知乎提供的思路找到粘贴的原理,通过TheViper找到粘贴图片的方法. 其原理为一下步骤: 监听粘贴事件:[用于插入图片] 获取光标位置:[记录图片插入位置] 获取剪切板内容:[主要是获取文件] 上传剪切板图片: 在指定光标位置插入图片. 以下是代码部分: 1.获取光标代码部分,大部分都是直接利用TheViper的代码,只是做了简单的修改,在获取光标