KindEditor编辑器粘贴图片直接上传(Chrome,IE11,opera)
web kindeditor 2017-04-19 4321 0
关于本站

“最难不过坚持”

本人承接扒站仿站,php网站维护,病毒查杀,网站编辑,网站改版,html制作

有需要网站维护,改版,病毒查杀,网站编辑,网站备案,html制作等相关的工作可以联系我。
本人有多年相关工作经验,也可提供免费咨询,交个朋友。
有需要探讨问题的朋友,也可以加我微信,共同探讨!
微信:15011482830 QQ:408917339

6414152 2611 39
最新评论
https://jueru.net/
评 留言
:weixiao:
评 留言
:shuijiao: :weiqu: :zhenbang: :leng:
评 留言
:yiwen: :yiwen: :yiwen: :yiwen:
评 EasySass: could not generate CSS file. See Output panel for details.
这个业务逻辑多少都有点奇怪了,阅读浏览次数增值在新闻详情页的控制器方法里setInc,这怎么还写进模型事件里了。如果非要用onAfterRead也可以,把新闻文章的内容单独分出来一个news_content表,然后把它和news做关联,然后给news_content表的onAfterRead事件做增值处理,这样点进新闻页内查询到文章内容时才会触发它。
评 TP6模型事件-查询后onAfterRead不好用
文章标签更多
ThinkPHP (254)
Mysql (58)
DedeCms (33)
jQuery (67)
证件照 (1)
setInc (4)
setDec (4)
onclick (5)
打开边栏(ESC) 关闭边栏(ESC)

本方法来自网络,适用于KindEditor4.1.10。

经本人测试,Chrome,Firefox,360浏览器8.1极速模式可用,ie9测试不能用。


经测试KindEditor4.1.11版本,用此代码也可以实现自动上传功能。代码粘贴好后,直接用源代码里面提供的demo.php测试即可。如果自己引用的KindEditor编辑器实现不了,最好比对一下自己引用编辑器的代码和demo.php引用代码的区别,如果有区别,仿照一下基本能实现。


方法,修改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


版权声明:本篇文章来源于网络。 来源链接

相关推荐
kindeditor批量图片上传,修改上传的数量和大小限制
kindeditor | 2017-08-03 5105
KindEditor批量图片上传,默认允许用户同时上传20张图片,单张图片容量不超过1MB。 有时不满足我们的需要,就需要修改KE批量上传图片的个数和单个图片大小限制。 KindEditor 4.1.11:  方法一:调用KE时配置好参数就行,代码如下: <link rel="stylesheet" h...
kindeditor编辑器插入程序代码后在<p>标签和<pre>标签间会多出一行<p><br></p>
kindeditor | 2020-04-26 4551
kindeditor编辑器插入程序代码后在<p>标签和<pre>标签间会多出一行<p><br></p> 导致前台显示的时候很难看。如下图: 我想实现的情况是1,但是出现的情况是2 而且初次提交代码没问题,当修改的时候用到“HTML代码”标签的时候,就会出现多...
评论:0条
评论加载中...
发表评论