KindEditor4.1.10,支持粘贴图片(转载!)
本人扩展了KindEditor4.1.10,使得他能够在Chrome和IE11中直接粘贴复制的图片(比如通过截图工具把图片直接保存在剪切板中),然后调用上传URL上传图片
方法,修改kindeditor.js中的代码:
在5825行附近大概是下面这个样子的:
- K(doc.body).bind('paste', function (e) {
- if (self.pasteType === 0) {
- e.stop();
- return;
- }
在第1行和第2行之间插入:
- //处理IE11,Chrome粘贴图片上传
- function dopasteImg() {
- //debugger;
- var file = null;
- if (window.clipboardData) {//ie
- if (clipboardData.files && clipboardData.files.length)//IE11
- file = clipboardData.files[0];
- else if (!clipboardData.getData("text") && !clipboardData.getData("url")) {
- alert("不能粘贴文件或图片,请使用IE11或者Chrome浏览器,或使用上传功能");
- return true;
- }
- } else {
- if (e.event.clipboardData.items)//chrome
- for (var i = 0; i < e.event.clipboardData.items.length; i++) {
- if (e.event.clipboardData.items[i].kind === "file") {
- file = e.event.clipboardData.items[i];
- break;
- }
- }
- if (file == null) {
- if (!e.event.clipboardData.getData("url") && !e.event.clipboardData.getData("text")) {
- alert("不能粘贴文件或图片,请使用IE11或者Chrome浏览器,或使用上传功能");
- return true;
- }
- }
- }
- if (file) {
- if (!K.undef(self.allowImageUpload, true)) {
- alert("编辑器禁止上传图片,请与有关人员联系!");
- return true;
- }
- //获取File Blob
- //debugger;
- var blb;
- if (file.getAsFile) {//Chrome
- blb = file.getAsFile();
- if (blb.size === 0) {
- alert("不能获取剪切板中的" + (file.type.indexOf("image/") === 0 ? "图像" : "文件")
- +"\n如果是从OutLook中复制的,请换其他程序,如Word");
- return true;
- }
- sendfile(blb, file.type);
- } else {
- var fr = new FileReader();
- if (fr.readAsArrayBuffer) {//ie
- fr.onloadend = function (evt) {
- blb = evt.target.result;
- sendfile(blb, file.type);
- }
- fr.readAsArrayBuffer(file);
- }
- }
- function sendfile(b, t) {
- var xhr = new XMLHttpRequest();
- var formData = new FormData();
- var isImg = t.indexOf("image/") === 0;
- //formData.append('imgFile', file,"untitled." + t.split('/')[1]);
- //formData.append('imgFile', b);
- var myBlob = new Blob([b], { "type": t });
- formData.append('imgFile', myBlob, "untitled." + t.split('/')[1]);
- //formData.append('imgFile', b);
- formData.append('dir', isImg ? 'image' : 'file');
- xhr.open('POST', self.uploadJson);
- xhr.onreadystatechange = function () {
- if (xhr.readyState == 4&&xhr.status == 200) {
- // if (fn) {
- var data = _trim(xhr.responseText);
- //if (dataType == 'json') {
- data = _json(data);
- if (data.error) {
- if (typeof ($) !== "undefined" && $.messager && $.messager.alert) {
- $.messager.alert('Error', data.message, 'warning');
- } else {
- alert(data.message);
- }
- } else {
- //self.exec('insertimage', url, title, width, height, border, align);
- if(K.undef(self.formatUploadUrl, true))
- data.url =K.formatUrl(data.url, 'absolute');
- self.exec('insertimage', data.url, "from clipboard", undefined, undefined, undefined, undefined);
- }
- //}
- // fn(data);
- // }
- }
- }
- xhr.send(formData);
- }
- return true;
- }
- }
- //debugger;
- if (dopasteImg())
- e.stop();
- //处理粘贴结束5825
此代码在chrome中测试通过,上传文件的服务器端处理无须改变,本代码已在chrome v35,IE11上测试通过
其中处理的几个例外情况是:
- .在IE11和Chrome以外的浏览器中,如果复制了图片,粘贴,有可能会粘贴成<img src="data:img/png:base64:xxxxxx"..../>这种形式的,如IE10或者Firefox,但也可能会粘贴成<img src="本地路径" 这种格式的,前一种格式,如果通过一些复杂的处理,做成上传比较容易(或者直接不处理,但这只能显示在支持这种HTML5格式的浏览器中),但后一种情况,如从OutLook收件箱中复制的图片,本人认为处理会很复杂,所以简单起见,禁止这些情况的粘贴
- 在chrome中,如果复制了Outlook收件箱的图片,在剪切板中是找不到这个文件的内容的(file.size==0),这种情况下的粘贴也会被禁止并提示
- 在IE11和Chrome中都有FormData对象,所以当能取到文件的时候一定是IE11或者Chrome
- 如果是火狐浏览器,pasteType设置为2即可,且在引用时判断浏览器类型如为火狐。则用form-data方式进行存储。(暂时找不到更好的办法,望指教)
KindEditor4.1.10,支持粘贴图片(转载!)的更多相关文章
- KindEditor4.1.10,支持粘贴图片
转载自https://blog.csdn.net/jimmy0021/article/details/73251406 我已经忘记我是不是从这个博主的那里找到的解决kindeditor粘贴图片的方法了 ...
- kindeditor-4.1.10 结合 Asp.Net MVC 添加图片功能
KindEditor是一套开源的HTML可视化编辑器,现在我要结合Asp.Net MVC4 上传图片功能,做相应的配置和修改, 其实网上也有人写过类似的文章了,我写出来是以防以后使用的时候出现这样的问 ...
- 让input支持 ctrl v上传粘贴图片? 让input支持QQ截图或剪切板中的图像数据(Java实现保存)
原理:监听粘贴 → 获取粘贴内容 → 将内容上传 → 抓取后返回替换至input 我们在生产中用到的界面: 测试地址 http://sms.reyo.cn 用户名:aa 密码:123456 以下是PH ...
- Ckeditor 中粘贴图片
我们在ckeditor 中有上传图片,但是实际使用中这种手动上传图片方式并不是很方便,而是复制或者截图粘贴图片. 这里我们实现主要是获取对应的粘贴事件. CKEDITOR.instances[&quo ...
- WORD粘贴图片+DEDE
自动导入Word图片,或者粘贴Word内容时自动上传所有的图片,并且最终保留Word样式,这应该是Web编辑器里面最基本的一个需求功能了.一般情况下我们将Word内容粘贴到Web编辑器(富文本编辑器) ...
- ckeditor从word粘贴图片
自动导入Word图片,或者粘贴Word内容时自动上传所有的图片,并且最终保留Word样式,这应该是Web编辑器里面最基本的一个需求功能了.一般情况下我们将Word内容粘贴到Web编辑器(富文本编辑器) ...
- ckeditor直接粘贴图片实现
自动导入Word图片,或者粘贴Word内容时自动上传所有的图片,并且最终保留Word样式,这应该是Web编辑器里面最基本的一个需求功能了.一般情况下我们将Word内容粘贴到Web编辑器(富文本编辑器) ...
- ckeditor实现WORD粘贴图片自动上传,jsp应用
官网地址http://ueditor.baidu.com Git 地址 https://github.com/fex-team/ueditor 参考博客地址 http://blog.ncmem.com ...
- ckeditor富文本编辑器的使用和图片上传,复制粘贴图片上传
自动导入Word图片,或者粘贴Word内容时自动上传所有的图片,并且最终保留Word样式,这应该是Web编辑器里面最基本的一个需求功能了.一般情况下我们将Word内容粘贴到Web编辑器(富文本编辑器) ...
随机推荐
- C# Winform 界面中各控件随着窗口大小变化
在做一项工程中,由于不确定目标平台的分辨率,而正常使用要求铺满整个屏幕,所以界面中的各个控件必须能够适应窗口的变化. 首先想到的就是控件的百分比布局,但是再尝试写了几个控件的Location和Size ...
- jquery怎么跳出当前的each循环
有些朋友可能会以为在jquery跳出循环可以直接使用continue和break了,但是使用之后没有效果,因为在jquery中没有这两条命令. 后来上网查了下,得到了结果: return false; ...
- IBM服务器诊断面板
IBM服务器一般会有一个服务器操作员信息面板(诊断面板),服务器一般的硬件故障都会在诊断面板上提示,但这些提示可能只是一个大概的诊断故障,有助于系统管理员更好的维护. 一.IBM X3650 M3诊断 ...
- AngularJS Best Practices: ui-router
ui-router is a 3rd-party module and is very powerful. It supports everything the normal ngRoute can ...
- Spring单实例、多线程安全、事务解析
原文:http://blog.csdn.net/c289054531/article/details/9196053 引言: 在使用Spring时,很多人可能对Spring中为什么DAO和Se ...
- 20145320《Java程序设计》第四次实验报告
20145320<Java程序设计>第四次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.04.26 15: ...
- js 给样式添加随机颜色
下面提供了三种获取随机颜色值的方法 方法一: 创建一个颜色 HEX 值数组,然后随机抽取这个数组里6个值,组合生成颜色. function color1(){ var color = "&q ...
- n皇后2种解题思路与代码-Java与C++实现
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了n皇后问题的解题思路,并分别用java和c++实现了过程,最后,对于算法改进 ...
- android 消息机制
一.Android应用程序的主线程主要用于更新UI界面,并且主线程不能做耗时操作,否则会引起ANR:这种情况下需要开一个子线程来进行耗时操作,动作完成之后,子线程发消息给主线程通知其更新UI显示,常见 ...
- Dynamics AX 2012 R2 安装额外的AOS
众所周知,AX系统分为三层:Client,Application Server,Database Server. 我们添加额外的Application Server主要是出于以下两个原因: 使用多台服 ...