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

此代码在chrome中测试通过,上传文件的服务器端处理无须改变,本代码已在chrome v35,IE11上测试通过

其中处理的几个例外情况是:

    1. .在IE11和Chrome以外的浏览器中,如果复制了图片,粘贴,有可能会粘贴成<img src="data:img/png:base64:xxxxxx"..../>这种形式的,如IE10或者Firefox,但也可能会粘贴成<img src="本地路径" 这种格式的,前一种格式,如果通过一些复杂的处理,做成上传比较容易(或者直接不处理,但这只能显示在支持这种HTML5格式的浏览器中),但后一种情况,如从OutLook收件箱中复制的图片,本人认为处理会很复杂,所以简单起见,禁止这些情况的粘贴
    2. 在chrome中,如果复制了Outlook收件箱的图片,在剪切板中是找不到这个文件的内容的(file.size==0),这种情况下的粘贴也会被禁止并提示
    3. 在IE11和Chrome中都有FormData对象,所以当能取到文件的时候一定是IE11或者Chrome
    4. 如果是火狐浏览器,pasteType设置为2即可,且在引用时判断浏览器类型如为火狐。则用form-data方式进行存储。(暂时找不到更好的办法,望指教)

KindEditor4.1.10,支持粘贴图片(转载!)的更多相关文章

  1. KindEditor4.1.10,支持粘贴图片

    转载自https://blog.csdn.net/jimmy0021/article/details/73251406 我已经忘记我是不是从这个博主的那里找到的解决kindeditor粘贴图片的方法了 ...

  2. kindeditor-4.1.10 结合 Asp.Net MVC 添加图片功能

    KindEditor是一套开源的HTML可视化编辑器,现在我要结合Asp.Net MVC4 上传图片功能,做相应的配置和修改, 其实网上也有人写过类似的文章了,我写出来是以防以后使用的时候出现这样的问 ...

  3. 让input支持 ctrl v上传粘贴图片? 让input支持QQ截图或剪切板中的图像数据(Java实现保存)

    原理:监听粘贴 → 获取粘贴内容 → 将内容上传 → 抓取后返回替换至input 我们在生产中用到的界面: 测试地址 http://sms.reyo.cn 用户名:aa 密码:123456 以下是PH ...

  4. Ckeditor 中粘贴图片

    我们在ckeditor 中有上传图片,但是实际使用中这种手动上传图片方式并不是很方便,而是复制或者截图粘贴图片. 这里我们实现主要是获取对应的粘贴事件. CKEDITOR.instances[&quo ...

  5. WORD粘贴图片+DEDE

    自动导入Word图片,或者粘贴Word内容时自动上传所有的图片,并且最终保留Word样式,这应该是Web编辑器里面最基本的一个需求功能了.一般情况下我们将Word内容粘贴到Web编辑器(富文本编辑器) ...

  6. ckeditor从word粘贴图片

    自动导入Word图片,或者粘贴Word内容时自动上传所有的图片,并且最终保留Word样式,这应该是Web编辑器里面最基本的一个需求功能了.一般情况下我们将Word内容粘贴到Web编辑器(富文本编辑器) ...

  7. ckeditor直接粘贴图片实现

    自动导入Word图片,或者粘贴Word内容时自动上传所有的图片,并且最终保留Word样式,这应该是Web编辑器里面最基本的一个需求功能了.一般情况下我们将Word内容粘贴到Web编辑器(富文本编辑器) ...

  8. ckeditor实现WORD粘贴图片自动上传,jsp应用

    官网地址http://ueditor.baidu.com Git 地址 https://github.com/fex-team/ueditor 参考博客地址 http://blog.ncmem.com ...

  9. ckeditor富文本编辑器的使用和图片上传,复制粘贴图片上传

    自动导入Word图片,或者粘贴Word内容时自动上传所有的图片,并且最终保留Word样式,这应该是Web编辑器里面最基本的一个需求功能了.一般情况下我们将Word内容粘贴到Web编辑器(富文本编辑器) ...

随机推荐

  1. ionic安装指定版本

    npm install -g ionic@1.4.0 原文地址:http://stackoverflow.com/questions/30316994/how-to-install-specific- ...

  2. SDK开发断点失效

    做SDK开发,一般会创建一个静态库工程,然后添加一个app的Target 可是,Xcode7创建的工程,app的Target中断点有效,能断住,为什么静态库的Target中的断点断不住呀. 断点断住发 ...

  3. Eclipse新增Web项目

    [前置条件] 1. 电脑已安装JDK1.6,并成功配置环境变量 2. 电脑已存在tomcat6.0包,无需安装 [操作步骤] 1. 为eclipse配置tomcat6.0 (1)eclipse菜单栏, ...

  4. 看StackOverflow如何用25台服务器撑起5.6亿的月PV(微软的架构)

     问答社区网络 StackExchange 由 100 多个网站构成,其中包括了 Alexa 排名第 54 的 StackOverflow.StackExchang 有 400 万用户,每月 5.6 ...

  5. jQuery源代码学习之六——jQuery数据缓存Data

    一.jQuery数据缓存基本原理 jQuery数据缓存就两个全局Data对象,data_user以及data_priv; 这两个对象分别用于缓存用户自定义数据和内部数据: 以data_user为例,所 ...

  6. ajax获取其他网站接口信息

    MXS&Vincene  ─╄OvЁ  &0000023─╄OvЁ  MXS&Vincene MXS&Vincene  ─╄OvЁ:今天很残酷,明天更残酷,后天很美好, ...

  7. asp批量查询

    在做asp查询时候 借鉴的一些代码 留个纪念....... <!-- #include file="conn.asp"--> <html> <head ...

  8. C#:绘图问题

    1.设置DPI Bitmap bitmap2 = new Bitmap((int)w, (int)h); bitmap2.SetResolution(, ); 2.设置Graphic(如:去锯齿等) ...

  9. linux初始化配置-----网络配置

    一.设置linux网络 1)零时设置ip地址 由于centos7默认没有ifconfig命令所以为了使用方便我们先安装net-tool使我们能使用ifconfig命令查看ip地址 ·挂载系统光盘 [r ...

  10. JSON上

    关于JSON部分: 目录: 一:定义二:实例三:JSON的语法 一:什么是JSON? 1.JSON:JavaScript 对象表示法(JavaScript Object Notation). 2.JS ...