springboot下ueditor上传功能的实现及遇到的问题
前言
本文主要写的是:springboot下ueditor上传功能的实现及遇到的一些问题的处理
整体项目结构展示
Springboot整合ueditor及上传功能实现的具体步骤
1、下载ueditor-1.4.3.3
这个在官网下载就行,不过貌似utf-8版本的没有资源了,源码版的下了几次都中断了,最终我是从第三方下的
2、新建一个测试页面
ueditor的根目录下有一个index.html,用它就行,源码如下
完整demo UEditor演示
可以编辑
3、引入上传所需的jar包
com.gitee.qdbp.thirdparty ueditor 1.4.3.3 commons-codec commons-codec commons-fileupload commons-fileupload 1.3.1 commons-io commons-io 2.5 compile org.json json
4、新建上传文件保存目录文件夹,如下
其中的config.json是从ueditor-1.4.3.3的文件夹里拷过来,因为我发现默认上传文件路径就是config.json所在目录,而且springboot下我试了配置imagePathFormat并没有什么用。
5、新建UeditorController
用于读取ueditor.json配置文件,同时实现上传方法(当然这里我们直接使用了ueditor.jar的上传,因此显得很简单,但如果要我们自己写那就有一堆代码量了)
importcom.baidu.ueditor.ActionEnter; importorg.springframework.stereotype.Controller; importorg.springframework.util.ClassUtils; importorg.springframework.web.bind.annotation.RequestMapping; importjavax.servlet.http.HttpServletRequest; importjavax.servlet.http.HttpServletResponse; importjava.io.PrintWriter; /** *百度富文本编辑器 *描述1:config.json中配置的如图片大小限制(imageMaxSize)文件类型等在页面js中已经验证过了,后台不需要在处理 *描述2:使用ueditor.jar的话就不需要自己 *描述3:config.json中imageUrlPrefix配置举例:"imageUrlPrefix":"/fileupload/ueditor" *描述3:config.json中imagePathFormat配置举例:"imagePathFormat":"/image/{yyyy}{mm}{dd}/{time}{rand:6}" *描述4:imageUrlPrefix+imagePathFormat为上传文件的访问路径 * *zkh *2019年11月14日9:09 */ @Controller publicclassUeditorController{ ///ueditor/jsp/config.json文件所在的父目录,上传文件默认根目录为config.json文件所在目录 privateStringconfigJsonParentPath=ClassUtils.getDefaultClassLoader().getResource("").getPath()+"static/fileupload/ueditor"; /** *UEditor初始化时会以get方式请求serverUrl地址,并且需要在action=config时返回UEditor配置文件信息 *描述:使用ueditor.jar包中的ActionEnter的话,就不需要自己再去实现其上传功能,因为ActionEnter已经帮我们实现了 */ @RequestMapping("ueditor") publicvoidgetEditorConfig(HttpServletRequestrequest,HttpServletResponseresponse,Stringaction){ response.setContentType("application/json"); try{ Stringexec=newActionEnter(request,configJsonParentPath).exec(); if(action!=null&&(action.equals("listfile")||action.equals("listimage"))){ exec=exec.replace(configJsonParentPath.substring(1),"/"); } PrintWriterwriter=response.getWriter(); writer.write(exec); writer.flush(); writer.close(); }catch(Exceptione){ e.printStackTrace(); } } }
注意看注释
6、接着,我们需要将ueditor.config.js中的serverUrl配置为我们在第5步的那个controller,如下
7、最后还要在config.json中配置下我们上传的具体细节,下面以图片上传为例
/*上传图片配置项*/ "imageActionName":"uploadimage",/*执行上传图片的action名称(举例:http://localhost:8080/ueditor?action=uploadimage)*/ "imageFieldName":"upfile",/*提交的图片表单名称*/ "imageMaxSize":2048000,/*上传大小限制,单位B*/ "imageAllowFiles":[".png",".jpg",".jpeg",".gif",".bmp"],/*上传图片格式显示*/ "imageCompressEnable":true,/*是否压缩图片,默认是true*/ "imageCompressBorder":1600,/*图片压缩最长边限制*/ "imageInsertAlign":"none",/*插入的图片浮动方式*/ /*imageUrlPrefix+imagePathFormat为当前文件的访问路径*/ "imageUrlPrefix":"/fileupload/ueditor",/*图片访问路径前缀*/ /*imagePathFormat默认以当前config.json所在的目录为根目录*/ "imagePathFormat":"/image/{yyyy}{mm}{dd}/{time}{rand:6}",/*(注意:默认以当前config.json所在的目录为根目录)上传保存路径,可以自定义保存路径和文件名格式*/ /*{filename}会替换成原文件名,配置这项需要注意中文乱码问题*/ /*{rand:6}会替换成随机数,后面的数字是随机数的位数*/ /*{time}会替换成时间戳*/ /*{yyyy}会替换成四位年份*/ /*{yy}会替换成两位年份*/ /*{mm}会替换成两位月份*/ /*{dd}会替换成两位日期*/ /*{hh}会替换成两位小时*/ /*{ii}会替换成两位分钟*/ /*{ss}会替换成两位秒*/ /*非法字符\:*?"<>|*/ /*具请体看线上文档:fex.baidu.com/ueditor/#use-format_upload_filename*/
这里我们需要关注重点理解的是 imageUrlPrefix、imagePathFormat
1)域名+ imageUrlPrefix+imagePathFormat为当前文件的访问路径;
2)imageUrlPrefix是图片访问路径前缀,例如:http://localhost:8080/fileupload/ueditor,imageUrlPrefix就是其中的“/fileupload/ueditor”;
3)imagePathFormat是以imageUrlPrefix为根路径的文件存放的具体路径,例如:
http://localhost:8080/fileupload/ueditor/image/20190202/121222.jpg,imagePathFormat就是其中的“/image/20190202/121222.jpg”;
4)剩下其他参数就很明显了。
7、可能会遇到的问题
1、明明配置的文件最大为2048000,但是文件只有1M多点后台报错了?
解决:这是因为默认开启了springboot的上传,在application.properties中spring.servlet.multipart.enabled=false就可以了,或者也可以跳下它的默认最大值spring.servlet.multipart.max-file-size=1MB,具体如下图:
2、明明修改了imagePathFormat,单还是保存在了原始的路径下?
解决:直接将config.json文件放到了我想保存文件的位置即可。
3、在线管理图片无法显示?
解决:在我们上面的UeditorController中其实已经解决了,就是当action=listfile或者action=listimage时将newActionEnter(request,configJsonParentPath).exec()得到的字符串中的configJsonParentPath路径替换为空字符串即可,如下
最后启动服务,打开http://localhost:8080/ueditor/index.html页面测试,效果如下图:
总结
以上所述是小编给大家介绍的springboot下ueditor上传功能的实现及遇到的问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。