ueditor跨域上传文件

  最近使用ueditor进行开发,但是遇到图片附件、上传的问题,ueditor默认上传路径是ueditor的根目录下,但是业务需求是要上传到文件服务器上;这里使用自己写的文件服务器进行上传文件(也可以尝试使用ftp等文件服务器,但是返回参数要做处理,必须按照ueditor官网要求的数据格式进行返回)

下面介绍ueditor跨域文件上传:

1、重写上传方法的URL

UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl;
UE.Editor.prototype.getActionUrl = function(action) {
    if (action == 'uploadimage' || action == 'uploadscrawl' || action == 'uploadimage') 
    {
        return '<%=basePath%>sys/ueditorUpload/upload.action?comefrom=1&acount='+acount;
    }
    else if(action == 'catchimage')
    { 
    	var editor = UE.getEditor("editor");
    	var content = editor.getContent();
    	var imgs = UE.dom.domUtils.getElementsByTagName(this.document, "img");
    	var source =new Array();
    	$.each(imgs,function(index, element){
    		var src=$(element).attr('src');
    		source.push(src);
    	});
    	var url = fileServersURL+"/uploadFile/catcherImgUpload.action?comefrom=1&acount="+acount;
    	UE.ajax.getJSONP(url, {
    		source:source,fileServersURL:fileServersURL
        }, function(result) {
        	var list = result.list;
        	for(var i=0;i<imgs.length;i++){
        		var img = imgs[i];
        		$(img).attr('_src',list[i].source);
        		$(img).attr('src',list[i].source);
        	} 
        });
    	return;
    }
    else if(action=="uploadfile"||action=="listfile")
    {
    	 return '<%=basePath%>sys/ueditorUpload/uploadfile.action?comefrom=1&acount='+acount;
    }
    else
    {
        return this._bkGetActionUrl.call(this, action);
    }
}
 
 


UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl; 这行是为了获取action的;
UE.Editor.prototype.getActionUrl = function(action) {...}里面的if是用来重写上传方法的URL的,例如if(action == 'catchimage'),是重写图片抓取的上传方法,如果
没有重写,ueditor会走自己的上传方法,这样文件上传到服务器就会到项目部署的服务器上,如果项目部署到多个服务器上,只会在访问的服务器上有文件,其他服务器上没有
,这样就有访问失败的情况,重写之后,文件就会上传到文件服务器上,才能达到想要的结果。
if语句里“action=='catchimage'”这里的catchimage是ueditor自己的文件上传的action
uploadimage 执行上传图片的action名称
uploadscrawl 执行上传涂鸦的action名称
uploadimage 执行上传截图的action名称
上面是ueditor的部分上传方法的action,详细上传action在config.json文件里可以看到;


例如:if (action == 'uploadimage') 
    {
        return '<%=basePath%>sys/ueditorUpload/upload.action?comefrom=1&acount='+acount;
    }
这是重写之后的图片上传URL,重写之后在进行图片上传的话,将访问'<%=basePath%>sys/ueditorUpload/upload.action?comefrom=1&acount='+acount这个方法进行文件上传
if(action == 'catchimage'){...}里面的方法是对图片抓取进行地址重写,因为从网络上复制图片之后,ueditor会带着原来图片的地址,这里要改成自己文件服务器的地址




猜你喜欢

转载自blog.csdn.net/qq_35131811/article/details/77935429