Spring Boot整合UEditor,解决找不到上传文件的问题

来源:互联网 发布:js滑动下拉菜单 编辑:程序博客网 时间:2024/05/16 04:23

在实践中如果贸然尝试使用Controller会导致上传文件失败,原因是因为Spring Boot的Request不能强转成为MultipartRequest,只能通过注解请求数据的键作为参数才能获得上传的文件。这里给一个最佳实践,可以不必大幅度修改Spring Boot的配置和UEditor源码,即可快速整合UEditor。

1、第一步,下载UEditor完整源码包,解压缩,把com.baidu.ueditor整个包的源码导入到工程中。

2、第二步,把UEditor的前端静态文件都放在网站的ueditor路径下。

3、第三步,在JSP源码路径中找到config.json,也复制到网站的ueditor路径下。

4、第四步,在项目中写如下的Sevlet类,它可以直接绕过Spring Boot的控制

import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.baidu.ueditor.ActionEnter;@WebServlet(name = "UEditorServlet", urlPatterns = "/UEditor")public class UEditorController extends HttpServlet {public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding( "utf-8" );  response.setHeader("Content-Type" , "text/html");  PrintWriter out = response.getWriter();ServletContext application=this.getServletContext();String rootPath = application.getRealPath( "/" );     String action = request.getParameter("action");  String result = new ActionEnter( request, rootPath ).exec();  if( action!=null &&      (action.equals("listfile") || action.equals("listimage") ) ){      rootPath = rootPath.replace("\\", "/");      result = result.replaceAll(rootPath, "/");  }  out.write( result );  }}

5、第五步,修改com.baidu.ueditor下的ConfigManager类

将configFileName的值修改为"ueditor\\config.json"


6、第六步,修改网站路径下的ueditor/ueditor.config.js脚本

找到 , serverUrl: URL +

在后面的值中做修改,改为../UEditor,用来实现前端自动去访问接口的操作。


7、第七步,写一个Controller,打开一个页面,页面的HTML这样写:

<script id="editor" type="text/plain"  style="width:100%;height:300px"></script></div><script>$(document).ready(function (){var ue = UE.getEditor('editor');})</script>


8、完成,打开这个Controller的URL,UEditor即可映入眼帘,上传一张图片试试,如果能上传,说明整合成功。


其他说明:用Chrome浏览器时点击上传图片会有几秒钟的延时,原因不详,有待官方解决。


【关于有Tomcat运行时环境和Jetty运行时环境的区别设定】

感谢windlee09网友所提供的信息,经过实践观察,如果Spring Boot的运行方式是直接从main方法运行,那么需要在SpringBoot的Application类上加上@ServletComponentScan注解。如果采用的是maven clean package tomcat7:run,则无需添加该注解,Tomcat会负责搜索注解类。

1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 ErrorPage! Reason:*Networkbusy*InvalidURL*Failedto install_flash_player_10_active_x 伊织 伊织调教 起重机司机学习 ssni 输入梯形上底下底高,输出面积 python语言,输入梯形上底下底高输出面积 网易产品 https://www.csdndoc.com/blog/390696 https://www.cocoacontrols.com 风之教堂 黄色网站 AV网站 439973416 فیلترشکن WS_CLIPCHILDREN设置键在哪里 数据结构(严蔚敏李冬梅)课后答案 ipz809 一个字包含的二进制位数 linux面试 【题目2】设计一个结构体类型,包含姓名、出生日期。其中出生日期又包含年、月、日三部分信息。输入n个好 【题目2】设计一个结构体类型,包含姓名、出生日期。其中出生日期又包含年、月、日三部分信息。输入n个好 结构体比较好友中年纪最小的 matlab三维矩阵可视化 使QQ崩溃 scanIP 按照规定,在高速公路上行使的机动车,达到或超出本车道限速的10%则处200元罚款;若达到或超出50% c语言输入三个数字 c语言如何输入三个数求平均值 c语言如何输入三个数求和 C语言为什么只录入了第一个数字 输入多个数字 c语言scanf只有第一个数字 scanf三个整数 double double类型 www和http 会计 日记账 myamnatfound