Ueditor提供的功能比较多,但是服务器参数配置文件默认只读取一个文件,搜了一圈也没有方法设置能通过前端js来导入上传路径等配置。
如果想让ueditor的上传器在同一个网站不同的页面可以利用ueditor上传到不同文件夹里,可以考虑以下方式:
(以下修改基准均为1.4.3.3版最后提供的php服务器端文件,后台登录验证还有token什么的还是要自己加加,不然有安全问题)
方法一:
1、config.json复制一份,并修改复制文件的 imagePathFormat参数为新的上传文件夹地址,
2、ueditor.config.json 复制一份 ,修改其 serverUrl 参数确定新的control.php的地址
3、control.php复制一份,修改其第20行附近的参数,确定config.json的地址
$CONFIG = json_decode(preg_replace("/\/\*[\s\S]+?\*\//", "", file_get_contents("config.json的地址")), true);
4、在前端页面创建初始化页面时引用不同的ueditor.config.json复件。
这种方法应付偶尔1、2个不同的上传文件夹或者不同配置是有效的,但是如果有多种不同细微的配置需求,文件为3倍数量的增长,不是良好的方法。
方法二:
前提知识:
ueditor.config.json 配置的是前端编辑器的参数,这个可以通过前端页面初始化编辑器时
UE.getEditor(id,opt)
传入json格式数据 即opt来覆盖修改。
config.json配置的是后台服务器相关参数,普通方式是无法修改的。从安全和易用的两个角度考虑,为了可以方便的载入不同的config.json,采取以下步骤:
步骤1
在contorl.php 第二十行左右代码
$action = $_GET['action'];
下添加如下代码,作用是新增一个get接受参数other,如果设置了$other的值,通过$otherConfigArr表(可以自己配置其他的config.json路径。注意不是ueditor.config.json,而是config.json)的映射,来载入不同的配置:
//自己新增:自定义多个config的路径
$otherConfigArr=[
'oa'=>'config/config.upload_oa_image.json',
'special'=>'config/config.upload_special_image.json'
];
if(isset($_GET['other'])&&isset($otherConfigArr[$_GET['other']])){
$other=$otherConfigArr[$_GET['other']];
$otherCONFIG=json_decode(preg_replace("/\/\*[\s\S]+?\*\//", "", file_get_contents($other)), true);
$CONFIG=array_merge($CONFIG,$otherCONFIG);
}
//新增完毕
步骤2:
在ueditor.all.js 第8030行附近的代码
if(serverUrl) {
serverUrl = serverUrl + (serverUrl.indexOf('?') == -1 ? '?':'&') + 'action=' + (actionName || '');
的下面新增一行代码:
serverUrl = serverUrl + '&other=' + (this.getOpt('other_config_type') || '');
步骤3:
新增一个config.upload_oa_image.json,里面只需要写入一句代码:
{ "imagePathFormat": "/upload/image/oa/{filename}"}
imagePathFormat是ueditor标准配置项,配置的是图片上传的文件夹和文件名格式。这里只填一项,覆写这个参数即可。
当然如果你想覆写其他参数也可以,比如imageManagerListPath是指设置某个路径,使得在线管理页面,列出设置的路径下的所有图片。
步骤4:
在前端初始化编辑器时传入
UE.getEditor('container',{'other_config_type':'oa'});
这里的'oa'就能对应步骤一中$otherConfigArr的键值地址,载入步骤三的config.upload_oa_image.json,覆写了原来config.json文件的imagePathFormat配置项。从而实现前端安全的调用不同配置文件,满足不同的配置需求。