松鼠的博客

导航

统计

UEditor富文本编辑器图片粘贴和上传问题

项目引入的是UEditor富文本编辑器,由于安全(把攻击脚本伪造成图片)和图片大小(base64格式的图片可能会太大)的原因,用户输入的图片都要先发送给后端,然后拿到后端的链接赋值给image标签的src属性。

这里有两种处理办法:
第一种:
在ueditor.config.js里面的window.UEDITOR_CONFIG(配置项主体)加上imageUrl参数,大概32行处:

 


重写ueditor.all.js 里面的getActionUrl方法,差不多在8776行

 

但是由于这里的代码太多了,不容易维护,所以我用第二种方法去处理:
重写getActionUrl方法,在src/extend里面,创建一个ueditor文件夹专门对UEditor编辑器的问题进行维护修改:

let {UE} = window
UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl
/**
* 根据action名称获取请求的路径
* @method getActionUrl
* @remind 假如没有设置serverUrl,会根据imageUrl设置默认的controller路径
* @param { String } action action名称
* @example
* ```javascript
* editor.getActionUrl('config'); //返回 "/ueditor/php/controller.php?action=config"
* editor.getActionUrl('image'); //返回 "/ueditor/php/controller.php?action=uplaodimage"
* editor.getActionUrl('scrawl'); //返回 "/ueditor/php/controller.php?action=uplaodscrawl"
* editor.getActionUrl('imageManager'); //返回 "/ueditor/php/controller.php?action=listimage"
* ```
*/
UE.Editor.prototype.getActionUrl = function _getActionUrl(action) {
if (action === 'uploadimage') {
return 'xxx' // 图片接口地址
}
// ...
return this._bkGetActionUrl(action)
}


这样写方便代码的维护,并且容易对后进行拓展。

这时候使用工具栏的上传图片功能就处理完了,但是粘贴的图片有时候不会触发上述方法,不知道大家有没有这种情况,真是纳闷,检查发现是有时候粘贴的图片是在clipboardData的第二位???,emmm,只能去修改getPasteImage方法了,大概在26589行。

function getPasteImage(e) {
var item = e.clipboardData && e.clipboardData.items
if (item) {
var reg = /^image\//
if (item.length === 1 && reg.test(item[0].type)) {
return item
} else if (item.length === 2 && reg.test(item[1].type)) {
// 有时候粘贴的图片会在第二位
return {
0: item[1],
length: 1
}
} else {
return null
}
} else {
return null
}
}

参考文章:http://blog.ncmem.com/wordpress/2023/12/27/ueditor%e5%af%8c%e6%96%87%e6%9c%ac%e7%bc%96%e8%be%91%e5%99%a8%e5%9b%be%e7%89%87%e7%b2%98%e8%b4%b4%e5%92%8c%e4%b8%8a%e4%bc%a0%e9%97%ae%e9%a2%98/

欢迎入群一起讨论

 

 

posted on   Xproer-松鼠  阅读(305)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2019-12-27 html5大文件上传解决方案(500M以上)
2019-12-27 前端大文件上传解决方案(500M以上)
2019-12-27 vue大文件上传解决方案(500M以上)
2019-12-27 js大文件上传解决方案(500M以上)
2019-12-27 web大文件上传解决方案(500M以上)
2019-12-27 jsp大文件上传解决方案(500M以上)
点击右上角即可分享
微信分享提示