关于Ckeditor编辑器(四)
ckeditor编辑器处理复制word文档带图片
只有研发想不到,没有产品需求做不到,竟然还有ckeditor编辑器的坑
直接从word文档里面复制过来的文本,含有大量的图片,客户懒得一张张图片上传……
word文档里面的图片路径都是这样的,浏览器不能解析
file:///C:/Users/SUPERS~1.Z/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg
解决办法
a.监听编辑器内容的改变 当文本被粘贴进来的时候就进行预处理。
b.将文本的img标签过滤,然后将图片上传到服务器。
c.用上传之后的图片地址替换原有的url
CKEDITOR.on("instanceReady", function(){
CKEDITOR.instances.content.on('change',function(e){//content为textarea的id
var a = e.editor.document ;
var b = a.find("img");
var count = b.count();
for(var i=0;i<count;i++){
var src =b.getItem(i).$.src;//获取img的src
if( src.substring(0,4)!='http'){
$.ajax({
type:"POST",
url : "${ctxPath}/uploadLocal",
async:false,//同步,因为修改编辑器内容的时候会多次调用change方法,所以要同步,否则会多次调用后台
data: {"path":b.getItem(i).$.src},
success:function(data){
var data=eval('(' + data + ')');
if(data.statusCode=='200'){
var imgurl=data.filename; //上传服务器之后的地址
//获取并更改到现有的图片标签src的值
b.getItem(i).$.src=imgurl;
var a = CKEDITOR.instances.content.document.$.getElementsByTagName("img")[i];
a.setAttribute('data-cke-saved-src',imgurl);
}
}
});
} else{
//不是本地图片不处理
// alert(src);
}
}
});
})
最终实现效果