|  RSS订阅  |  加入收藏

UEditor上传图片功能无法使用,提示:后端配置项没有正常加载,上传插件不能正常使用!

百度编辑器UEditor点击单图上传图片按钮后,一直载入中,选择多图上传,提示后端配置项没有正常加载,上传插件不能正常使用。编辑器在本地运行正常,在服务器上特定的环境下异常。
摘要
...

事情还得从元旦那回说起。话说2017年最后一天启用CDN内容分发服务后,网站也就更新了几篇文章而已,昨天按计划开更内容,写了一半准备插图的时候,就爆了。硬生生的不让我插入图片啊,俗话说字不如表,表不如图。一张图能解决很多文字才能表达清楚的意思,并且简单直白粗暴。



故障详情,UEditor报配置错误。

点击单图上传按钮,选择需要的图片以后,编辑器中就一直是一个loading的状态,文章中无法插入需要的图片了。尝试使用多图上传功能,点开后就出现了错误信息:后端配置项没有正常加载,上传插件不能正常使用!如图:

QQ图片20180113213823.png

初步排查了下错误原因,我看了下本地程序,一起正常,前面是点击单图上传出现loading状态的,这个有两种可能图片上传了,拉取不到,二是图片没有成功上传。FTP看了下服务器上的文件,很显然,图片并没有被上传。

查找出错原因,尝试排除故障。

回想了下,之前发布文章的时候功能一直正常,最近更新系统也都没有牵扯到文章系统的改造,而UEditor是个集成环境,没有做二次开发,只在使用的时候自定义了一些配置,并且配置当时调试正常,最近也没有变更配置。

那么最大的可能就是在我启用CDN之后出现的故障了,原因前面也提到启用CDN以后一直没有更新带图的博文。在没有确定是否是CDN造成的准确判断之下,我尝试断开了CDN,直接解析了域名,待生效后登录后台,发现插图功能恢复,最终验证了猜测。

既然是CDN造成的,无非就是因为回源的问题。之前做过将博客的后台系统全部回源了,而UEditor只出现在后台上,并没有出现在前台。我就在想,也许是因为我把UEditor作为插件使用的,而我在静态资源路径配置方面,和后台视图路径并非一致。接下来我就把UEditor的路径在阿里云CDN里面回源了,刷新后CDN缓存后再次尝试添加图片依然无效(这之前把域名解析切回到了CDN上)。然后又接着将UEditor的配置文件ueditor.config.jsconfig.json等需要加载的做了文件回源。做完这一切之后,后台依然没有鸟我,还是报错。

阅读UEditor源码找到坑之所在。

联想到之前QQ互联的坑,加上编辑器其它功能都完好,唯独上传功能异常,果断判断问题应该出现在参数被过滤的原因上。

通过阅读UEditor的PHP版上传原代码,绕了个小弯,先去看了Uploader.class.php这个文件,这个上传类要先读取配置项目$config,果断将$config加到阿里云CDN的过滤参数中,再次尝试,依然没有解决。然后就去看了下ueditor.config.js文件,在顶部看到这样一句:服务器统一请求接口路径。serverUrl: URL + "php/controller.php"。如获至宝,迅速点开controller.php文件,看到$action = $_GET['action'];,并且下面通过switch来判断数据内容的,也就是说这个$action才是被统一调用各种参数的公共名称。所以最后将action写到CDN的过滤参数中(实则是过滤参数保留),问题解决。

打赏
  CDN    UEditor    
转载请注明出处,未经许可禁止商用!
西枫里 熊掌号
代码改变世界 ———— 半路出家,全程修道
发表评论
*依据《网络安全法》规定,您需实名认证后才能评论!