百度ueditor上传文件后台如何用springmvc 自带分页的controller控制,不用自带的controller.jsp。

2.JavaWeb(8)
由于UEditor是用它自带的controller.jsp进行编辑器的请求处理,而有的项目是希望把所有请求都由spring来管理
所以一种方式是自己写spring里面的request mapping来对接ueditor的相关请求,不过我搞了半天没搞出来(我是菜逼啊....)
所以另一种比较粗暴简单的方式就是直接按照官方文档,仍然使用它自带的jsp进行编辑器的请求处理
(感觉配置ueditor到spring mvc的过程主要都是解决相关路径问题)
下一个UEditor的Jsp版
添加它的lib依赖add to build path
把ueditor目录放到网站根目录下,把它自带的index.html的demo页面改成index.jsp,我的项目目录结构如下:
其中要解决几个问题,
一个是jsp文件我是默认放到WEB-INF目录下的,这样可以避免前台直接访问jsp,但是ueditor前台又需要用它的controller.jsp来管理编辑器请求的,所以直接把整个ueditor的目录放到网站根目录webapp下,这样就可以直接访问controller.jsp了
一个是我的项目的spring拦截处理了所有请求,所以ueditor的js等静态资源获取不到,需要在spring配置里面通过
&&mvc:resources&标签排除掉
applicationContext.xml:
最后个问题是,出现了使用ueditor图片上传后没有显示出来,并且多图上传的图片管理中列出的图片也显示不出来的情况
后来发现是ueditor的配置文件config.json里图片访问是直接接上网站根目录的,也就是说
平时我们的项目是 localhost:8080/项目名 ,&对应的ueditor图片路径应该是&localhost:8080/项目名/图片路径
而ueditor访问它上传的图片路径却是: &&localhost:8080/图片路径 , 把网站项目名被狗吃了!
所以一种解决方式是配置&config.json目录里的相关路径 ,比如imageUrlPrefix等,具体参考:&&,但是这样的话就不能不把把项目名写死在config.json
另一种粗暴的解决方式是不改它的配置(既然是傻瓜式配置,所以ueditor的东西尽量不改),因为项目网站发布后,一般也是域名即项目根目录的,
所以改tomcat配置,让项目启动后能访问localhost:8080/即访问项目根目录,这种方式需要在开发时改eclipse里面的tomcat配置:
server location里面选第二个(只有eclipse刚添加tomcat服务器的时候才可以改这个选项)
然后到自己的tomcat目录下面改server.xml里面的path, 把项目目录映射为网站域名根目录:
&Context docBase=&/MyCode/apache-tomcat-7.0.67/wtpwebapps/SpringMvcWithJspUEditor& path=&/& reloadable=&true& source=&org.eclipse.jst.j2ee.server:SpringMvcWithJspUEditor&/&&/Host&
然后图片路径就能正常访问了:
Eclipse配置tomcat发布路径的问题 & &
百度ueditor与spring mvc结合应做的修改. & &&
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:24384次
积分:1044
积分:1044
排名:千里之外
原创:85篇
(5)(1)(1)(1)(5)(1)(1)(1)(1)(2)(7)(2)(9)(21)(22)(7)(1)后端配置项没有正常加载,上传插件不能正常使用!_ueditor讨论吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:668贴子:
后端配置项没有正常加载,上传插件不能正常使用!收藏
上传部分都是后端配置项没有正常加载,上传插件不能正常使用!,求解决
刘备:军师,此次伐魏你有何妙计?
免费的都是问题。
运行环境配置好了么
百度Ueditor 开发的一个疏忽导致的,
因为很多正式环境对大小写敏感。打开ueditor下的php/controller.php,(其他环境选对应的文件夹)把时区设置按如下改个字母大小写,再打开该文件就正确返回json。然后,ueditor就不会报“后台配置项没有正常加载,上传插件将不能正常使用!”了原来设置的是:date_default_timezone_set(&Asia/chongqing&);把重庆的首字母改成大写,就可以了:date_default_timezone_set(&Asia/Chongqing&);
导入js下的lib里的jar包
在浏览器中运行 net/controller.ashx,如果返回以下接过,则表示应用程序运行成功。{&state&:&action 参数为空或者 action 不被支持。&}
JSP 里面有个config.json不能用记事本编辑,否则出现这个错误,在LINUX环境下的。
(php)使用ueditor跨域上传文件,fireBug:SyntaxError: expected expression, got '&' &?phpError: Permission denied to access property '$EDITORUI' dialog = parent.$EDITORUI[window.frameElement.id.replace( /_iframe$/, '' )];ReferenceError: $G is not definedvar tabs = $G('tabhead').这种情况下怎么处理?图片如下:网上说有时区大小写,写改了,还是报错希望各位大侠帮忙看看~
我在controller.jsp修改了rootpath后也出现了这个错误,我本来是想改变默认的上传文件夹路径
php/controller.php 中头部文件注释取消,把更换成自己网站的域名header('Access-Control-Allow-Origin: '); //设置允许跨域访问header('Access-Control-Allow-Headers: X-Requested-With,X_Requested_With'); //设置允许的跨域header
?这个句子精辟到只有十五个字的说
是的,需要使用专业的编辑器,比如sublime3 或者 notepad++ 保存编码的时候以UTF-8保存即可
ueditor/php/controller.php?action=config
我测试的这个给我返回的json是个请求地址出错应该是什么原因呢
我遇到这个问题的原因是controller.jsp与config.json没有放到同一目录下
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或这是我的个人博客,但我期待你的参与...MSN:(将#改成@)
百度ueditor与spring mvc结合应做的修改.
作者:yihaomen 日期:
在使用百度ueditor 作为富文本编辑器时,java 版本默认提供了一个controller.jsp 用来上传,如果要求不高,采用这种方式,确实可以。但如果与spring mvc 结合,并且配置了spring mvc 的拦截路径等情况下,这样做很不好,而且也不是统一的spring mvc&&的风格,所以得有所改变. 也就是自己要重新写一个spring mvc 的controller.我在项目中是采用如下方式写的这个controller , 用起来还不错。 程序代码import java.io.IOEimport java.io.PrintWimport javax.servlet.http.HttpServletRimport javax.servlet.http.HttpServletRimport org.springframework.stereotype.Cimport org.springframework.web.bind.annotation.RequestMimport com.baidu.ueditor.ActionE@Controller@RequestMapping(value = "/ueditor")public class UeditorController {&&&&&&&&@RequestMapping("/dispatch")&&&&&&&&public void config(HttpServletRequest request,&&HttpServletResponse response, String action) {&&&&&&&&&&&&&&&&response.setContentType("application/json");&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&String rootPath = request.getSession().getServletContext().getRealPath("/");&&&&&&&&&&&&&&&&try {&&&&&&&&&&&&&&&&&&&&&&&&String exec = new ActionEnter(request, rootPath).exec();&&&&&&&&&&&&&&&&&&&&&&&&PrintWriter writer = response.getWriter();&&&&&&&&&&&&&&&&&&&&&&&&writer.write(exec);&&&&&&&&&&&&&&&&&&&&&&&&writer.flush();&&&&&&&&&&&&&&&&&&&&&&&&writer.close();&&&&&&&&&&&&&&&&} catch (IOException e) {&&&&&&&&&&&&&&&&&&&&&&&&e.printStackTrace();&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&&&&&}}如果你有安全性检测,比如session 检测的,可以自己在里面加入代码,但一般都通过拦截器处理了,可以不在这里处理。这样做了之后,在需要引入 ueditor 的页面,我们加入一个全局的javascript 变量: 程序代码 &script&window.PROJECT_CONTEXT = "${ctx}/";&/script&&&&&&script type="text/javascript" charset="utf-8" src="${ctx }/static/js/ueditor/ueditor.config.js"&&/script&&&&&&script type="text/javascript" charset="utf-8" src="${ctx }/static/js/ueditor/ueditor.all.min.js"& &/script&&& &&&&&script type="text/javascript" charset="utf-8" src="${ctx }/static/js/ueditor/lang/zh-cn/zh-cn.js"&&/script&&&&&&script type="text/javascript" charset="utf-8" src="${ctx }/static/js/ueditor/ueditor.parse.min.js"& &/script& 当然,还需要修改一个很重要的文件:ueditor.config.js , 也就是修改上传的路径: 程序代码 window.UEDITOR_CONFIG = {&&&&&&&&//为编辑器实例添加一个路径,这个不能被注释&&&&&&&&UEDITOR_HOME_URL: URL&&&&&&&&// 服务器统一请求接口路径&&&&&&&&, serverUrl: window.PROJECT_CONTEXT + "ueditor/dispatch"&&&&&&&&主要修改的就是serverUrl。另外百度ueditor 是开源的,对于config.json 的路径等问题,完全还可以把源代码下载下来,自己跟踪修改,这样对于上传路径的问题,就不会那么纠结了。而且安全性也高,否则人家直接可以下载下来看。比如在我的项目中,我修改了路径:ConfigManager 这个类: 程序代码private String getConfigPath () {        //return this.parentPath + File.separator + ConfigManager.configFileN    &&&&//I modify this, because it is not suit for our porject.    &&&&return this.rootPath +&&File.separator + "WEB-INF" + File.separator + "classes" +&&File.separator + ConfigManager.configFileN    }这是根据我项目的情况修改的,有源代码了,其他修改更容易。关键是打造出满足自己项目的东西才行.
| 查看次数: -
游客发言不需要密码.
禁止表情转换
禁止自动转换链接
禁止自动转换关键字
虽然发表评论不用注册,但是为了保护您的发言权,建议您.UEditor - 帮助
常见问题解答
1:表情设置了本地化之后,插入的表情只显示了一个叉叉,怎么办?
答:首先请确保dialogs/emotion/目录下存在images文件夹及其下属的所有表情文件。如果检查后确实存在对应的表情文件,那可以在编辑器中点击未显示的表情图标,在弹出的浮层中点击“修改”,然后查看地址栏中的表情地址是否指向对应的目录。如果没有,请修改editor_config.js配置文件中的URL参数。
2:上传的图片在编辑器中显示不出来,怎么办?
答:一般上来说,这是由于图片路径配置错误引起的。图片路径的配置需要和后端处理程序结合来确定。假设后端返回的路径是“uploadfiles/.jpg”,那么前端editor_config.js文件中的配置项imagePath需要配置的信息是从根目录一直到uploadfiles的上级目录为止。
3:图片上传成功之后,在编辑器中能显示出来,但是保存到数据库后在项目的另外一个页面却不能正确显示,怎么办?
答:出现这种情况一般是由于图片采用相对路径方式保存而造成的。建议保存到数据库中的地址数据采用相对网站根目录(即以"/"开头)的相对路径保存,从而在保证可移植的同时避免各种路径问题。
4:代码高亮功能在编辑器中能够正确显示,可是在展示页面却没有高亮效果,为什么?
答:UEditor的代码高亮功能需要对应的CSS样式支持。在编辑框内,UEditor默认已经加载了对应的样式,但是当用户将提交保存后的代码展示在其他页面的时候,失去对应样式支持的代码高亮肯定是没有效果的。解决的方法是在需要展示代码高亮的页面引用UEditor资源文件夹third-party目录下的对应CSS文件和JS文件。具体来说,就是引用shCoreDefault.css文件和shCore.js文件,然后在页面中执行SyntaxHighlighter.all()即可。
5:IE6下初始化编辑器的时候报错,并提示“已终止操作”怎么办?
答:一般来说这种错误的出现是由于编辑器所在页面dom结构没有加载完成就实例化编辑器造成的,将实例化代码置于&/body&标签之前可以解决大部分这种错误。如果仍然不能解决可以尝试以下两种方法。代码示例如下:
&script type="text/plain" id="myEditor" class="myEditor"&
编辑器初始化内容
第一种方法:
&script type="text/javascript"&
var editor = new baidu.editor.ui.Editor({textarea:'myValue'});
setTimeout(function(){
editor.render("myEditor");
第二种方法(引用JQuery):
$(document).ready(function(){
var editor = new baidu.editor.ui.Editor();
editor.render('myEditor');
6:大部分编辑器的容器都使用textarea,为什么UEditor采用了很特殊的script标签?
答:首先要说明一点的是,UEditor也支持textarea标签作为编辑器的外围容器,只要将对应的标签名字换成textarea即可。除此之外,UEditor还支持使用div和script标签作为其容器。之所以要这样做,只是为了尽最大可能去满足和适应用户的各种不同需求。官方推荐使用script标签的原因是textarea会在提交数据的时候自动对里面的部分html文本进行一次特殊字符转义,从而导致有些不熟悉的用户在再编辑的时候出现编码混乱的问题。而使用script标签可以很好地克服这个缺点。
7:如何禁用编辑器提供的右键菜单?
答:UEditor提供了自适应选区内容的右键菜单,建议用户不要禁用。如果非要禁用的话,可以在编辑器初始化的时候传入参数contextMenu:[]即可。
8:IE6下切换源码的时候明显感觉到延迟现象,怎么回事?
答:UEditor集成了codemirror第三方插件用来实现源码高亮模式,因此在切换的时候需要做很多的特殊处理从而导致了速度变慢。没有源码高亮需求的同学可以在配置项中设置sourceEditor:"textarea"来关闭这个效果。
9:图片上传的页面或者图片转存页面上的上传flash渲染不出来怎么办?
答:这种情况的出现一般是因为没有将编辑器相关文件部署到服务器,而是直接在本地打开demo页面造成的,具体原因是受到了flash安全机制的限制。请同学们在测试代码,尤其是图片上传等需要和后端交互的模块时,请务必将编辑器部署到服务器中运行。
10:从数据库中获取数据,然后通过initialContent参数或者script、textarea等标签设置到编辑器之后,出现语法错误提示或者显示内容不完整,怎么办?
答:出现这个问题的原因一般是初始化的内容中存在特殊的标签或者符号导致的。举例来说,如果通过设置initialContent的方式来初始化的话,那么其值中出现的所有内容必须对引号(' 或 ")进行转码,否则具体内容会和系统定义的单引号冲突,造成内容被截断,或者直接报错。如果用textarea标签或者script标签来初始化的话,那必须确保内容中不能出现script或者textarea标签,否则也会出现内容被截断的现象。
11:点击图片上传按钮之后,进度条到达60%左右,然后显示一个红叉,没有任何提示,怎么办?
答:UEditor的Flash上传在用户提示方面目前确实还有不完善的地方,我们正在不断改进。造成上述问题的原因主要有以下几个方面,同学们可以对照着调试:第一,后台程序出现运行错误,直接被中断,没有返回任何信息;第二,后台程序返回了错误的信息,所有非"SUCCESS"的state参数都将直接返回对应的提示,并显示红叉。第三,网络异常,编辑器没有收到后台程序返回的正确信息。排除了上述三方面的问题之后,如果还有问题,欢迎到群里或者邮件里向UEditor小组提出,不胜感激!
12:我插入的script,style等标签被过滤掉了,怎么办?
答:在editor_config.js里边搜索blackList,去掉里边相关的标签名,就不会被过滤掉了。
13:插入分页功能怎么用,预览时为啥只能看到一个“_baidu_page_break_”?
答:工具栏上的插入分页,会对html代码进行切分和补全操作,例如
&ul&&li&sdsddsf&/li&在这里插入分页&li&sdsddsf&/li&&/ul&
那么插入分页后
&ul&&li&sdsddsf&/li&&/ul&
&ul&&li&sdsddsf&/li&&/ul&
后台会接收到以上的代码,这个时候再用分页符标识切分html代码,展示的时候就不会出现展示补全,或者怪异的展示效果的问题。
注意:预览时是没有效果的
14:为什么我安装截图插件的时候会报错,提示“无法注册dll/ocx,regsvr32失败,退出代码0x3”?
答:这是由于安装环境缺少相应的库文件,请安装vs2008 sp1。
15:为什么我插入的代码没有代码高亮?
答:1.你的项目里要有我们下载包里的third-party/SyntaxHighlighter/下的2个文件,一个是css,一个js
2.editor_config.js里边有两个属性,用来让编辑器找到你的这两个文件,并在编辑器初始化时加载这两个文件。 highlightJsUrl,highlightCssUrl
3.editor_all.js里要包含高亮的插件代码,如果你用是我们提供的editor_all.js那就不用管这步,如果是你自己选的功能合成的js,那就要有plugins/highlight.js
4.上边的操作就可以在编辑器里实现代码高亮了,如果你想在展示时加上代码高亮,可以参考_examples/highlightDemo.html里边的代码
16:图片、附件上传需要涉及到的配置有哪些?为什么我每次上传都显示一个红叉?
答:1.请首先阅读文档中的图片上传部分!!!
2.图片上传需要前后端的协作:A.在前端,UEditor提取了几个常用的配置到editor_config.js中, 如imagePath,compressSide,maxImageSideLength具体代表的含义请参考对应注释。当然,更多的配置还需要在image.html文件中完成,比如提交地址url等,具体含义同样请参考对应位置的注释。B、在后端,需要配置文件的保存路径uploadPath,保存完成之后需要返回一个包含图片地址的json字符串给前端。C、返回的json字符串必须符合如下格式{'url':'图片地址','state':'SUCCESS','title':'图片title'}。其中state的值依据实际情况返回,只有当图片真正保存成功时才是“SUCCESS”.
3.完成了上述的配置之后,如果图片提示没有上传成功,则需要分以下几个步骤检查:A、确定图片是否已经正确保存到指定的目录。如果已经保存,则检查返回的json数据格式和内容,否则请检查图片保存路径是否正确、文件夹是否具有写入权限等。B、检查返回数据格式的方法:在image.html文件中的uploadCompleteCallback回调中设置一个断点,跟踪返回值是否如预期。
17:在编辑器中上传(图片,附件,截图,word图片转存)与传统上传的差异?
1、传统的上传文件需要两个配置,一个是前端form中的action地址,另外一个是服务器端保存地址。
2、在UEditor中,上述两个配置肯定不可缺少:前者在image.html中的flash创建参数中配置,后者在php文件中配置。
3、和传统上传不一样的是,UEditor不仅需要上传文件,还需要将其插入至编辑器中,因此必须实时得到服务器的返回地址,而这个地址的具体值是由后端程序决定的,相对还是绝对,得看具体情况。如果是相对路径(最好预先过滤掉“../”,“./”之类的字符,否则在前端会出现严重问题),那么由于后端的相对路径跟前端显示相对路径可能不一样,因此在显示页面必须手动修正,这个修正由config中的imagePath 来配置;如果是绝对路径,那么前端就无需再进行处理,imagePath置空即可。
4、如果需要更深层次的对服务器端返回的数据进行控制,那么就需要修改回调函数。标题中所列的四种涉及文件上传的模块均有对应的回调函数,具体来讲,图片的回调在image.html中,附件在attachment.html文件中,word转存在wordimage.html文件中,截图在snapscreen.js文件中,同学们可照此分别修改。
18:如何配置附件上传?
1、鉴于市场占有率,UEditor的附件上传采用了广为流传的第三方开源项目swfupload,具体的配置和用法请参考
2、上传后插入到编辑器中的附件有对应的图标,UEditor提供了"/dialogs/attachment/fileTypeMaps.js"文件用来配置文件类型与对应的图标,同学们可根据需要自行删改。PS:在此之前,请确保fileTypeImages文件夹中存在对应的图标!
19:UEditor提供的图片在线管理是指什么?需要注意哪些问题?
1、图片在线管理虽名为管理,但考虑到安全因素,目前版本的UEditor并未提供删除功能,仅仅实现了在线图片浏览并插入至编辑器的功能。
2、由于无法获取数据库相关信息,UEditor的图片浏览采用了遍历文件夹的方式来实现。同学们需要在imageManager.php文件中配置存放图片文件的文件夹路径,并最终返回如imageManager.php中所示的json数据即可。
3、获取服务器图片的请求通过ajax来发送,需要在editor_config.js中配置imageManagerPath参数来指定imageManager.php文件的路径。如果同学们有额外的参数需要向后台发送,比如想实现删除功能,可以修改dialog文件夹下的image.js文件中关于imageManager模块的代码。
4、建议后台配置的图片存放路径尽量指向缩略图存放文件夹,并在返回数据中同时返回缩略图地址和真实地址,否则在浏览时可能造成不必要的带宽和性能消耗!
20:远程图片抓取为什么有的时候能成功,有的时候不能成功?
1、图片远程抓取的原理是通过捕获粘贴时的远程图片地址,并将其提交到服务器,再由服务器从远程机器将图片抓取到本地服务器
2、不成功的原因可能是远程图片服务器做了防盗链处理或者远程图片不存在。
21:当在实例化编辑器页的页面手动设置了document.domain时,编辑器提示跨域并创建不成功怎么办?
为了数据获取的需要,有时候我们需要在页面上手动更改domain,此时必须开启编辑器的配置项customDomain为true,并同时在dialogs/internal.js的头部增加document.domain配置即可。
22:.net版本图片上传报网络错误怎么办?
1.如果你的.net framework版本小于4.0,请删掉/net/web.config,然后使用vs2008或者vs2005自带的web.config
2.如果你的版本等于4.0,请检查editor_config.js中的URL变量配置(注意:一定要用绝对路径)
23:UEditor的图片上传能支持动态绑定参数么?
从1.2.4最新版本开始,UEditor的图片上传开始支持参数动态绑定功能,也即可以在选择文件之后修改本次或者指定图片的上传参数,广泛用于添加水印,目录选择等场合。
1)、打开dialogs/image/image.html文件,在页面最后找到$G("upload").onclick事件函数。
2)、修改postParams对象中的内容,其中每个key值对应着一个自定义的post参数。注意:系统保留action参数作为提交地址参数,其余随意。
单张上传(非特殊用户请自行忽略下面信息,否则自负后果哦^-^)
1)、修改postParams对象针对的是本次提交的所有图片,特殊情况下可能需要对具体某张图片进行设置,如“给第五张图片添加水印效果”等case。
2)、image.html页面中存在一个postConfig的全局对象用于存储单张图片的post上传信息。其格式如下所示:
postConfig = [
{"id":0,"data":{"dir":"1","custom":"value"}},//序号为0的图片包含dir和custom两个动态自定义参数
{"id":1,"data":{"dir":"2"}}
//序号为1的图片包含dir一个动态自定义参数
3)、在页面任何位置(需在upload之前,可参考image.html中的示例),都可以通过绑定事件并调用imageUploader.setPostParams(obj,index)接口来操作这个参数以达到为指定图片增加指定参数的目的。具体的调用方法为:
//为第五张(索引为4)图片添加一个dir和一个action参数,用于指定将第五张图片保存到upload1目录,
//且处理的地址是"/project/upload/up.php"
//PS:image.html页面中的示例没有传入index参数,在没有传入index参数的情况下,将会对所有图片执行相同的设置
imageUploader.setPostParams({
"dir":"2",
"action":"/project/upload/up.php"
编辑器讨论群
⑧群: (满)
③群: (满)今天看啥 热点:
百度UEditor图片上传、SpringMVC、Freemarker、Tomcat、Nginx、静态资源,
个人官网、公司项目都需要 可视化编辑器,百度UEditor做得很不错,就用的这个。项目后台用到了SpringMVC、Freemarker,开发过程中部署在Jetty,线上部署用Tomcat,最后可能配置Nginx代理。&& & 在实际使用过程中,遇到了太多的问题,因此有必要梳理和总结下。1. 先说百度UEditor在Java环境中的使用:1.1 & Html页面或者Freemarker模版里,引入百度UEditor的相关JS和CSS,如下& &script type=&text/javascript& src=&../../public/framework/ueditor/ueditor.config.js&&&/script&&!-- 编辑器源码文件 --&&script type=&text/javascript& src=&../../public/framework/ueditor/ueditor.all.js&&&/script&&script type=&text/javascript& src=&../../public/framework/ueditor/lang/zh-cn/zh-cn.js&&&/script&&!-- 实例化编辑器 --&&script type=&text/javascript&&& &var ue = UE.getEditor('editor');&/script&1.2接着在正文中,有如下代码&script id=&editor& type=&text/plain& name=&content& &&/script&1.3配置图片上传& ueditor.config.js设置:serverUrl: URL + &../../../ueditor/controller.jsp&& 这个请求向后端发送请求:&获得config.json总体的配置文件,config.json里设置了 抓取图片的url等各种参数。2.图片上传是最麻烦的地方:&2.1项目中使用的是Freemarker作为视图层,并且我不想再配置JSP视图解析了,故不想使用controller.jsp这种JSP。&而是改成了SpringMVC的Controller:@Controllerpublic class UeditorController {@RequestMapping(&/ueditor/config&)public void config(HttpServletRequest request,& HttpServletResponse response, String action) {&response.setContentType(&application/json&);&// config.json配置文件和图片上传位置,都默认为“网站根目录”&String rootPath = request.getSession().getServletContext() & &.getRealPath(&/&);//自己设置的目录&Object uploadRootPath = BasePropertyConfigurer.getContextProperty(&setting.upload_root_path&);&if (uploadRootPath != null) {& rootPath = uploadRootPath.toString();&}try {& String exec = new ActionEnter(request, rootPath).exec();& PrintWriter writer = response.getWriter();& writer.write(exec);& writer.flush();& writer.close();&} catch (IOException e) {& e.printStackTrace();&}}}上述代码中的大部分内容,都是从controller.jsp搬来的。经过实际使用发现,config.json配置信息和图都需要放到项目内部,即webapp下。我个人想把图片存放到外部目录,方便备份,并且就算整个项目完全重新部署,用户和项目的图片数据也不会丢失。所以,手动修改了rootPath ,最后config.json和图片目录都存放在C:/img下。2.2第二天突然发现,图片无法上传 ,错误提示“无法获得数据”。(这个问题困扰了我几个小时)Debug跟踪了每一层,发现SpringMVC拦截了图片上传请求。用户上传的图片,已经存储到服务器的临时目录,在拷贝这个图片到实际存储目录,提示找不到,最后也无法把图片回显给前端。最后经过逐步对比昨天的代码,突然发现,某同事增加了SpringMVC上传配置。&bean id=&multipartResolver& class=&org.springframework.monsMultipartResolver&&& & &&property name=&maxUploadSize& value=&&/&& & & &&property name=&maxInMemorySize& value=&4096&/&& &/bean&有了上述配置,通过SpringMVC的Controller响应UEditor的各种请求,就出了问题。也没有找到好的解决办法。最终,还是使用JSP的。2.3使用JSP-controller.jsp响应UEditor,在SpringMVC中增加JSP视图解析配置。&bean& & & &class=&org.springframework.web.servlet.view.InternalResourceViewResolver&&& & & &&property name=&prefix& value=&/ueditor/& /&& & & &&property name=&suffix& value=&.jsp& /&&!--可为空,方便实现自已的依据扩展名来选择视图解释类的逻辑 --&& & & &&property name=&viewClass&& & & & & &value=&org.springframework.web.servlet.view.JstlView& /&& &&/bean&2.4图片上传之后,前端还需要回显图片,这个时候又要响应图片请求。后端管理系统,SpringMVC是拦截所有的请求,“/”,而不是只拦截动态请求,比如“*.html”。所以,SpringMVC可以处理拦截到图片请求。增加如下配置:&mvc:resources mapping=&/ueimg/ueditor/**& &location=&file:${setting.upload_root_path}/ueimg/ueditor/**& &/&2.5我不想让SpringMVC处理图片,以为我觉得让Tomcat性能更好。问题来了,图片是存储到服务器的外部目录,比如C:/img,而不是/webapp/img。针对服务器内部的图片,Tomcat可以如下配置,web,xml&servlet-mapping&&&servlet-name&default&/servlet-name&&&url-pattern&/static/*&/url-pattern&&/servlet-mapping&而据Boss所说,web.xml里不能映射图片到外部目录。(我没有去尝试)解决办法显然是有的,只要部署了Nginx,任何静态资源,我都可以配置代理,让Nginx响应或者控制转发。但是,在开发过程中,我绝对不愿意再整个Nginx,项目开发依赖的环境越来越多,这是个大问题。我认为Nginx只是提高性能,方便线上的,本地项目开发根本不应该依赖它。最后,目前的情况下,我是让SpringMVC处理百度UEditor的图片请求,等到线上部署,配置Nginx,让Ngnix处理。2.6除了上面第2个问题,增加SpringMVC上传配置,导致我原来的配置出现了问题,还有一个大问题。我个人官网项目,前端和后端是一个项目,没有分开。而公司项目,前端和后端是完全的2个项目。config.json有如下配置:&imageUrlPrefix&: &&, /* 图片访问路径前缀 */& &&imagePathFormat&: &/ueditor/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}&我自己的项目,没有配置“图片访问路径前缀”,经实际观察,后台数据库存储的图片url就是“相对路径”,与imagePathFormat配置基本一样。前端访问图片的时,由于配置域名,浏览器会自动加上当前项目的路径,比如&http://localhost:8080&,或者“”。最终的图片访问路径是个“绝对路径”,&http://localhost:8080/ueditor/upload/...&但是公司后端系统没有部署在根目录,访问路径是&http://localhost:8080/backend&,不配置mageUrlPrefix,后台存储的虽说是相对路径,但浏览器发送的url是:&http://localhost:8080/backend/ueditor/...&,没有加上&项目名称&,所总是无法正常回显。2.7为了解决公司后端项目,图片无法回显的问题,我配置了imageUrlPrefix:&http://localhost:8080/backend&。图片就正常显示了。问题又来了,数据库存储的图片路径是绝对的&http://localhost:8080/backend/ueditor&。如果我们后端项目更换了路径,就无法响应这个图片了。除此之外,前端项目显示图片时,后端必须响应图片请求,前端和后端产生了依赖关系,这是万万不能接受的。2.8又改成不配置“图片访问路径前缀”,只存储图片的相对路径,后端项目开发部署在“根目录下”,访问路径是:“http://localhost:8080”。后端项目有图片请求,自己处理,前端项目自己的图片请求,自己处理,前后端2个系统没有依赖。本以为万事大吉了,结果又跪了。前端项目也没有部署在根目录,加上了项目名称,如:http://localhost:8080/user-center访问图片是路径是“http://localhost:8080/ueditor/...”,把user-center项目部署在根目录,图片就正常显示的。2.9线上实际部署的时候,不可能前端和后端2个项目,都部署在根目录下。因此,我们最终决定,把图片单独拿成一个单独的项目,启用自己的域名。config.json中配置图片前缀为:“http://”,数据库存储绝对路径,显示的时候,就是“/ueditor/...”。3.百度UEditor上传图片,很简单。但由于后端项目的配置、前端和后端项目分离、配置了SpringMVC上传,种种因素导致这个问题变得有点复杂。经过各种尝试,总是能够找到一个解决方案,只是有的能接受,有的不能接受。我自己的项目,我说了算,很容易搞定。公司的项目,我说了不算,情况也可能多变,麻烦死了额。小雷FansUnion-博学的互联网技术工作者日湖北武汉循礼门原文首发:/article/detail/525.html
相关搜索:
相关阅读:
相关频道:
&&&&&&&&&&&&&&&&&&
WEB前端教程最近更新

我要回帖

更多关于 springmvc整合ueditor 的文章

 

随机推荐