这里使用的是ueditor1.4.3的jsp版本的UTF-8版本.
首先下载相应的ueditor,将ueditor文件夹直接拷贝到项目中,文件结构如下所示:
然后将项目要用的jar包导入到lib目录下,在导入之前要先修改一下ueditor的jar包中的bug,这个可以参考这里点击打开链接
接着就是配置jsp目录下的config.json文件了,让它能适应我们的项目,配置内容如下:
/* 前后端通信相关的配置,注释只允许使用多行方式 */
{
/* 上传图片配置项 */
"imageActionName": "uploadimage", /* 执行上传图片的action名称 */
"imageFieldName": "upfile", /* 提交的图片表单名称 */
"imageMaxSize": 51200000, /* 上传大小限制,单位B */
"imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp",".swf"], /* 上传图片格式显示 */
"imageCompressEnable": true, /* 是否压缩图片,默认是true */
"imageCompressBorder": 1600, /* 图片压缩最长边限制 */
"imageInsertAlign": "none", /* 插入的图片浮动方式 */
"imageUrlPrefix": "http://localhost:8080/soulpower", /* 图片访问路径前缀 */
"imagePathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
/* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 */
/* {rand:6} 会替换成随机数,后面的数字是随机数的位数 */
/* {time} 会替换成时间戳 */
/* {yyyy} 会替换成四位年份 */
/* {yy} 会替换成两位年份 */
/* {mm} 会替换成两位月份 */
/* {dd} 会替换成两位日期 */
/* {hh} 会替换成两位小时 */
/* {ii} 会替换成两位分钟 */
/* {ss} 会替换成两位秒 */
/* 非法字符 : * ? " < > | */
/* 具请体看线上文档: fex.baidu.com/ueditor/#use-format_upload_filename */
/* 涂鸦图片上传配置项 */
"scrawlActionName": "uploadscrawl", /* 执行上传涂鸦的action名称 */
"scrawlFieldName": "upfile", /* 提交的图片表单名称 */
"scrawlPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
"scrawlMaxSize": 2048000, /* 上传大小限制,单位B */
"scrawlUrlPrefix": "", /* 图片访问路径前缀 */
"scrawlInsertAlign": "none",
/* 截图工具上传 */
"snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */
"snapscreenPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
"snapscreenUrlPrefix": "", /* 图片访问路径前缀 */
"snapscreenInsertAlign": "none", /* 插入的图片浮动方式 */
/* 抓取远程图片配置 */
"catcherLocalDomain": ["127.0.0.1", "localhost", "img.baidu.com"],
"catcherActionName": "catchimage", /* 执行抓取远程图片的action名称 */
"catcherFieldName": "source", /* 提交的图片列表表单名称 */
"catcherPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
"catcherUrlPrefix": "", /* 图片访问路径前缀 */
"catcherMaxSize": 2048000, /* 上传大小限制,单位B */
"catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取图片格式显示 */
/* 上传视频配置 */
"videoActionName": "uploadvideo", /* 执行上传视频的action名称 */
"videoFieldName": "upfile", /* 提交的视频表单名称 */
"videoPathFormat": "/ueditor/jsp/upload/video/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
"videoUrlPrefix": "http://localhost:8080/soulpower", /* 视频访问路径前缀 */
"videoMaxSize": 102400000, /* 上传大小限制,单位B,默认100MB */
"videoAllowFiles": [
".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid"], /* 上传视频格式显示 */
/* 上传文件配置 */
"fileActionName": "uploadfile", /* controller里,执行上传视频的action名称 */
"fileFieldName": "upfile", /* 提交的文件表单名称 */
"filePathFormat": "/ueditor/jsp/upload/file/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
"fileUrlPrefix": "http://localhost:8080/soulpower", /* 文件访问路径前缀 */
"fileMaxSize": 51200000, /* 上传大小限制,单位B,默认50MB */
"fileAllowFiles": [
".png", ".jpg", ".jpeg", ".gif", ".bmp",
".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso",
".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml"
], /* 上传文件格式显示 */
/* 列出指定目录下的图片 */
"imageManagerActionName": "listimage", /* 执行图片管理的action名称 */
"imageManagerListPath": "/ueditor/jsp/upload/image/", /* 指定要列出图片的目录 */
"imageManagerListSize": 20, /* 每次列出文件数量 */
"imageManagerUrlPrefix": "http://localhost:8080/soulpower", /* 图片访问路径前缀 */
"imageManagerInsertAlign": "none", /* 插入的图片浮动方式 */
"imageManagerAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 列出的文件类型 */
/* 列出指定目录下的文件 */
"fileManagerActionName": "listfile", /* 执行文件管理的action名称 */
"fileManagerListPath": "/ueditor/jsp/upload/file/", /* 指定要列出文件的目录 */
"fileManagerUrlPrefix": "http://localhost:8080/soulpower", /* 文件访问路径前缀 */
"fileManagerListSize": 20, /* 每次列出文件数量 */
"fileManagerAllowFiles": [
".png", ".jpg", ".jpeg", ".gif", ".bmp",
".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso",
".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml"
] /* 列出的文件类型 */
}
我主要修改了各种文件的上传前缀,让项目能够使用到相应的文件.(这里要注意一点,我们的congfig.json是UTF-8的版本,当你把项目 部署到服务器上的时候通过文本编辑器修改这个文件的时候是不起效果的,项目会出错,这是因为编码冲突的问题,所以我一般都是在IDE中修改好了以后之间复 制到服务器上的.)
然后就是页面的配置了
首先引入两个js文件
<script src="${pageContext.request.contextPath}/ueditor/ueditor.config.js" type="text/javascript"></script> <script src="${pageContext.request.contextPath}/ueditor/ueditor.all.js" type="text/javascript"></script>
然后要初始化两个参数
<script type="text/javascript"><span style="white-space:pre"> </span>$(function() { <span style="white-space:pre"> </span>window.UEDITOR_HOME_URL = "${pageContext.request.contextPath}/ueditor/"; <span style="white-space:pre"> </span>window.REAL_PATH = "${pageContext.request.contextPath}"; <span style="white-space:pre"> </span>});</script><span style="white-space:pre"> </span>
接着在body中加入一个uditor的script
<script id="container" name="content" type="text/plain" style="100%;height:500px;"> </script>
然后就是初始化这个container了
<script type="text/javascript"> var ue = UE.getEditor("container"); </script>
这样我们的ueditor就可以正常使用了.
下面介绍一下如何独立使用图片上传功能和文件上传功能
使用刚才的页面,我们在
var ue = UE.getEditor("container");
加入如下的javascript代码
container.ready(function () { //设置编辑器不可用 //<pre name="code" class="html">container<span style="font-family: Arial, Helvetica, sans-serif;">.setDisabled();</span>
//隐藏编辑器,因为不会用到这个编辑器实例,所以要隐藏
container<span style="font-family: Arial, Helvetica, sans-serif;">.hide();</span>
//侦听图片上传 container.addListener('beforeInsertImage', function (t, arg) { //将地址赋值给相应的 input $("#"+inpt).val(arg[0].src); //图片预览 $("#"+prev).attr("src", arg[0].src); }); //侦听文件上传 container.addListener('afterUpfile', function (t, arg) { $("#file").attr("value", arg[0].url); });
//弹出图片上传的对话框 function upImage() { var myImage = container.getDialog("insertimage"); myImage.open(); } //弹出文件上传的对话框 function upFiles() { var myFiles = container.getDialog("attachment"); myFiles.open(); }
通过按钮来调用这两个函数就可以完成文件上传以及图片上传的单独使用了.图片上传没有问题,但是文件上传我们需要作一些修改
打开ueditor.all.js,找到如下位置,插入对应的代码
commands:{ 'insertfile': { execCommand: function (command, filelist){ filelist = utils.isArray(filelist) ? filelist : [filelist]; if(me.fireEvent('afterUpfile', filelist) === true){ return; } var i, item, icon, title, html = '', URL = me.getOpt('UEDITOR_HOME_URL'), iconDir = URL + (URL.substr(URL.length - 1) == '/' ? '':'/') + 'dialogs/attachment/fileTypeImages/'; for (i = 0; i < filelist.length; i++) { item = filelist[i]; icon = iconDir + getFileIcon(item.url); title = item.title || item.url.substr(item.url.lastIndexOf('/') + 1); html += '<p style="line-height: 16px;">' + '<img style="vertical-align: middle; margin-right: 2px;" src="'+ icon + '" _src="' + icon + '" />' + '<a style="font-size:12px; color:#0066cc;" href="' + item.url +'" title="' + title + '">' + title + '</a>' + '</p>'; } me.execCommand('insertHtml', html); } } }
主要是ueditor中没有afterUpfile事件,我们自己触发一下.(如果你的项目以前运行过ueditor的项目,那么修改了这里要注意清空一下浏览器的缓存,因为ueditor是有缓存的,否则修改无法生效)