前言

ueditor默认图片上传目录是根目录的/ueditor/php/upload/,有一个不好的地方就是,如果你的站点在子目录里面,并且是做了rewrite的那就有点坑了,会出现图片上传成功,但前端无法显示图片的情况,原因就是路径问题。

例如,的本地环境,站点目录是/hisune.com/public/这个,但做了rewrite,通过http://127.0.0.1访问的是http://127.0.0.1/hisune.com/public/这个目录。

这个时候ueditor会上传文件到/而不是/hisune.com/public/,而后端返回给前端的url也为根目录/,rewrite会将根目录/的请求重定向到/hisune.com/public/,实际上这个目录没有这个上传的图片,这样就导致前端页面无法显示。这里提供一个解决办法。

解决方案

ueditor的上传路径都是可以配置的,在/ueditor/php/config.json里面,如果你不嫌麻烦,可以在这里面修改路径为你的站点正确的路径。但如果你修改了这些路径为你的发布环境的路径,那你本地调试可能又会有问题,那么有没有办法做到兼容所有情况呢?答案是肯定的。

实际本地环境:

/hisune.com/的请求rewrite到了/hisune.com/public/,本地通过http://127.0.0.1/hisune.com/访问;

ueditor在/hisune.com/public/asset/editor目录中。

看了一下ueditor的代码,开工:

  1. 在action_list.php和Uploader.class.php里面搜索:$_SERVER['DOCUMENTROOT'],并替换为:__DIR_\
  2. 在config.json查找:/ueditor/php/替换为:/ 至此,ueditor已经会将文件上传到/hisune.com/public/asset/editor/php/upload/php/image里面中了,但插入浏览器中的图片地址仍为json文件中配置的:/upload/image/20140804/1407140615126160.jpg 接下来只需要修改返回给前端的url路径地址了:
  3. 找到Uploader.class.php的最后一个函数getFileInfo()返回的url的值,修改为:"url" => dirname($_SERVER['SCRIPT_NAME']) . $this->fullName

至此,大功告成了!经测试,已经兼容任意路径了!

如果您觉得您在我这里学到了新姿势,博主支持转载,姿势本身就是用来相互学习的。同时,本站文章如未注明均为 hisune 原创 请尊重劳动成果 转载请注明 转自: ueditor默认图片上传目录问题 - hisune.com