UEditor-分布式部署解决方案
来源:互联网 发布:苹果平板电脑淘宝下载 编辑:程序博客网 时间:2024/04/28 10:18
UEditor是一款很强大的编辑器,但是在使用中又会遇到一些问题。比如常见的因为后台配置原因提示无法上传图片或者附件之类的。下面就把使用过程中遇到的问题和解决方法给各位友友分享一下:
1、下载依赖包
下载地址:http://ueditor.baidu.com/website/download.html
注:如果你想实现自定义文件上传,建议下载源码包。
2、使用方法就不赘述了,自己可以看官方的文档
官方文档地址:http://fex.baidu.com/ueditor/
3、在使用中遇到的问题
3.1 后台配置问题,无法上传文件
问题一:下载的包中jsp文件夹下面的config.json这个文件不能用记事本打开来编辑,否则就会出现JSON格式化异常。
可以用源码自己打断点试试。大坑,如果你不想跳的话,就老老实实地别用记事本了。
问题二:官方给的说明文档是直接部署在tomcat下一个项目,但是这样显然不符合我们的实际情况。如果你的项目是分布式部署的,那么对不起,你在不修改源码的情况下,貌似无法实现图片资源的多实例共享。此时,悲剧的事情就发生了,你懂的。
官网的配置文件config.json在获取文件目录时都是捕获的项目路径,但是分布式部署的时候,我们文件显然不是存放在单个示例的某个文件夹下面的。此时我们就需要对文件上传部分的路径进行一下修改,这也是前面建议大家下载源码的原因。
那么修改哪些部分呢,下面直接上源码:
1、文件上传分发器
package com.baidu.ueditor.upload;public class Uploader {private HttpServletRequest request = null;private Map<String, Object> conf = null;public Uploader(HttpServletRequest request, Map<String, Object> conf) {this.request = request;this.conf = conf;} //官网文件上传的执行方法public final State doExec() {String filedName = (String) this.conf.get("fieldName");State state = null; //处理不同的文件上传请求if ("true".equals(this.conf.get("isBase64"))) {state = Base64Uploader.save(this.request.getParameter(filedName),this.conf);} else {state = BinaryUploader.save(this.request, this.conf);}return state;}}
2、Base64Uploader.java
public static State save(String content, Map<String, Object> conf) {byte[] data = decode(content);long maxSize = ((Long) conf.get("maxSize")).longValue();if (!validSize(data, maxSize)) {return new BaseState(false, AppInfo.MAX_SIZE);}String suffix = FileType.getSuffix("JPG"); //这里的保存路径就是你在config.json中的imagePathFormat路径的值String savePath = PathFormat.parse((String) conf.get("savePath"),(String) conf.get("filename"));savePath = savePath + suffix;//官方的文件物理路径,这也就是无法实现分部署部署的关键 //String physicalPath = (String) conf.get("rootPath") + savePath;//此处修改为自己的文件上传路径便于分布式部署String physicalPath =Global.getProperties("sys.commons.FILE_UPLOAD_PATH") + savePath;State storageState = StorageManager.saveBinaryFile(data, physicalPath);if (storageState.isSuccess()) {storageState.putInfo("url", PathFormat.format(savePath));storageState.putInfo("type", suffix);storageState.putInfo("original", "");}return storageState;}
3、BinaryUploader.java中的方法按照自己的修改一下即可。
4、如果你的文件上传物理路径不是写在配置文件中,那么在config.json中新加一个物理路径参数,直接用conf取出来即可。即:
String physicalPath =(String) conf.get("yourphysicalPath") + savePath;
5、本处大家修改成自己的实现以后,在浏览本地图片资源的地方也记得修改,不然无法查看你已经上传的资源。
修改下面类中的方法即可,在此就不做累赘了。
FileManager.getPath( File file )
6.如果大家用的是源码,并且是和其他框架一起使用的话,那官方提供的依赖包就不需要重新导入了。
- UEditor-分布式部署解决方案
- quartz集群分布式(并发)部署解决方案-Spring
- 分布式数据中心数据库和存储部署解决方案
- quartz集群分布式(并发)部署解决方案
- quartz集群分布式(并发)部署解决方案-Spring
- 分布式数据中心数据库和存储部署解决方案
- quartz集群分布式(并发)部署解决方案-Spring
- 部署UEditor编辑器
- Ueditor字数限制解决方案
- .net分布式(缓存部署系统Memcached解决方案初体验)
- quartz-scheduler集群分布式(并发)部署解决方案-Spring
- 【G】开源的分布式部署解决方案(一)
- 【G】开源的分布式部署解决方案(一)_0
- 【G】开源的分布式部署解决方案(一)
- 【G】开源的分布式部署解决方案(二)
- 【G】开源的分布式部署解决方案(二)
- 【G】开源的分布式部署解决方案(三)
- hadoop完全分布式部署无法访问namenode的8020端口解决方案
- Summary for week6
- 自定义Dialog实现从下往上出现(内容省市县三级联动)
- JQuery时钟
- Opencv矩阵输出方式
- ios8 autoLayout
- UEditor-分布式部署解决方案
- 《机房收费之日历》
- JAVA gc垃圾回收机制
- 虚拟机ubuntu无法上网问题解决
- SQL操作表数据_Insert操作
- POJ 1988 Cube Stacking 并查集
- Andrew Ng机器学习课程6
- HDU 2063 过山车(简单二分匹配)
- MYSQL日志中ERROR GENERAL SLOW日志分析简述