springboot整合ueditor上传图片配置(JSP)从新建项目开始

第一步:

一、去ue官网下载他的源码(已经有的了就略过)

二、Eclipse新建项目ueditorDemo

项目目录如下:

application.properties配置如下:

第二步:

一、解压下载的源码——然后打开项目把源码拖进项目的resources/static中去

二、在WEB-INF下新建jsp文件夹 添加一个index.jsp

三、将staticueditor文件下的index.html中的内容复制到index.jsp中,修改一下js的路径,基本如下

然后启动项目去访问:http://localhost:8080/ueditorDemo/  

这时候访问页面成功 但是后台还没配置:F12打开Console发现报错

这时候查看请求会发现 http://localhost:8080/ueditorDemo/ueditor/jsp/controller.jsp?action=config&&noCache=1595814465808这个请求服务器的请求 

说明我打开这个页面它就去请求我的后台了

第三步(配置后台):

一、打开staticueditor文件下的ueditor.config.js

serverUrl 改为  "ueditor/config1" 如下图:

二、下面就要把源码里面的jsp下的jar包,add到项目中去

这里有两种方式来配置 分别建了Demo1Controller 跟Demo2Controller 两个来区别 (推荐第二种)

只演示第一种:

Demo1Controller.class

package com.demo.Controller;

import java.io.File;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import com.demo.entity.Results;

@Controller
public class Demo1Controller {
	/**
	 * 这里有两种方式,推荐第二种 第一种只是简略版 (只为演示)
	 * 一、上传配置:即不走config.json,自定义模拟config.json里的内容,解决后端配置项不正确,无法上传的问题 二、走config.json
	 * 即读取文件中的配置内容(在Demo1Controller)中
	 * 
	 * @return
	 */
	@RequestMapping(value = "/ueditor/config1", method = RequestMethod.GET)
	@ResponseBody
	public String uploadConfig(String action, String noCache) {

		// 注意以下:imageActionName
		// 根据这个ActionName的名字来上传接口:比如我现在设置的上传文件接口为下面那个:multipleCarouselFiles
		// imageUrlPrefix:是【点击确认之后,加载的资源路径】所属服务器中获取资源
		System.out.println("进入config====================");
		System.out.println("action=" + action + "   callback=" + noCache);
		String s = "{\n" + "            \"basePath\": \"C:/\",\n"
				+ "            \"imageActionName\": \"/multipleCarouselFiles\",\n"
				+ "                \"imageFieldName\": \"upfile\", \n" + "                \"imageMaxSize\": 2048000, \n"
				+ "                \"imageAllowFiles\": [\".png\", \".jpg\", \".jpeg\", \".gif\", \".bmp\"], \n"
				+ "                \"imageCompressEnable\": true, \n"
				+ "                \"imageCompressBorder\": 1600, \n"
				+ "                \"imageInsertAlign\": \"none\", \n"
				+ "                \"imageUrlPrefix\": \"http://localhost:8080/ueditorDemo/static/upload/images\",\n"
				+ "                \"imagePathFormat\": \"/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}\",  /* 上传视频配置 */\n"
				+ "    \"videoActionName\": \"/multipleCarouselFiles\", /* 执行上传视频的action名称 */\n"
				+ "    \"videoFieldName\": \"upfile\", /* 提交的视频表单名称 */\n"
				+ "    \"videoPathFormat\": \"/ueditor/jsp/upload/video/{yyyy}{mm}{dd}/{time}{rand:6}\", /* 上传保存路径,可以自定义保存路径和文件名格式 */\n"
				+ "    \"videoUrlPrefix\": \"http://localhost:8080/ueditorDemo/static/upload/images\", /* 视频访问路径前缀 */\n"
				+ "    \"videoMaxSize\": 204800000, /* 上传大小限制,单位B,默认100MB */\n" + "    \"videoAllowFiles\": [\n"
				+ "        \".flv\", \".swf\", \".mkv\", \".avi\", \".rm\", \".rmvb\", \".mpeg\", \".mpg\",\n"
				+ "        \".ogg\", \".ogv\", \".mov\", \".wmv\", \".mp4\", \".webm\", \".mp3\", \".wav\", \".mid\"]/* 上传视频格式显示 */ }";
		return s;
	}
	
	
	 /**
     * Ueditor上传文件
     * 这里以上传图片为例,图片上传后,imgPath将存储图片的保存路径,返回到编辑器中做展示
     * @param file
     * @return
     */
    @RequestMapping(value = "/multipleCarouselFiles",method = RequestMethod.POST)
    @ResponseBody
    public String uploadimage(@RequestParam("upfile") MultipartFile file, HttpServletRequest request, HttpServletResponse response) {

        //服务协议
        String Scheme =request.getScheme();
        //服务器名称
        String ServerName= request.getServerName();
        //服务器端口
        int Port= request.getServerPort();
        String url=Scheme+"://"+ServerName+":"+Port;
        
        Results results=new Results();
        //判断非空
        if (file.isEmpty()) {
            return "上传的文件不能为空";
        }
        try {
            //1、设置上传路径
        	String p  = request.getSession().getServletContext().getRealPath("/src/main/webapp/upload/images");
            File path = new File(p);
            if(!path.exists()){
                path = new File("");
            }
            //2、如果上传目录为/static/images/upload/,则可以如下获取:
            File upload = new File(path.getAbsolutePath(),"/src/main/webapp/upload/images");
            if(!upload.exists()){
                upload.mkdirs();
            }
            System.out.println("上传目录为---upload url:"+upload.getAbsolutePath());

            //测试MultipartFile接口的各个方法
            System.out.println("[文件类型ContentType] -:"+file.getContentType());
            System.out.println("[文件组件名称Name] -:"+file.getName());
            System.out.println("[文件原名称OriginalFileName] -:"+file.getOriginalFilename());
            System.out.println("[文件大小] -:"+file.getSize());
            System.out.println(this.getClass().getName()+"图片路径:"+upload);


            // 如果不存在该路径就创建
            String uploadPath=upload+"\\";
            File dir = new File(uploadPath + file.getOriginalFilename());
            // 文件写入
            file.transferTo(dir);
            //在开发测试模式时,得到的地址为:{项目根目录}/target/static/images/upload/
            //在打包成jar正式发布时,得到的地址为:{发布jar包目录}/static/images/upload/
            results.setMessage("上传单个文件成功");
        } catch (Exception e) {
            e.printStackTrace();
            results.setMessage("上传单个文件失败");
        }

        String result = "";
        if(!file.isEmpty()) {
            String originalFileName = file.getOriginalFilename();
            // 这里写你的文件上传逻辑
            // String imgPath = fileUtil.uploadImg(file);
            String imgPath = "/"+originalFileName;
            result = "{\n" +
                    "    \"state\": \"SUCCESS\",\n" +
                    "    \"url\": \"" + imgPath + "\",\n" +
                    "    \"title\": \"" + originalFileName + "\",\n" +
                    "    \"original\": \"" + originalFileName + "\"\n" +
                    "}";
        }
        return result;
    }
}

Demo2Controller.class

package com.demo.Controller;

import java.io.BufferedReader;
import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;

import com.alibaba.fastjson.JSON;

@Controller
public class Demo2Controller {
	/**
	 * 初始化UEditor上传文件、图片等配置
	 * 
	 * @param request
	 * @param response
	 */
	@RequestMapping(value = "/ueditor/config2")
	public void initController(MultipartFile upfile, HttpServletRequest request, HttpServletResponse response) {

		try {
			request.setCharacterEncoding("UTF-8");
			response.setHeader("Content-Type", "text/html");

			System.out.println("url : " + request.getRequestURL().toString());
			String value = request.getParameter("action");
			System.out.println("action:" + value);

			// 文件上传的路径(自定义)我这里是tomcat的路径
			String rootPath = "E:/apache-tomcat-8.0.52/webapps/ROOT/img/";
			String result = null;
			if ("config".equals(value)) { // 读取配置文件,将配置文件数据以json格式返回
				String configPath = "/static/ueditor/jsp/config.json";// 配置文件路径, 相对于classpath
				/**
				 * 返回JOSN数据
				 * {"videoMaxSize":102400000,"videoActionName":"uploadvideo","fileActionName":"uploadfile","fileManagerListPath":"/ueditor/jsp/upload/file/","imageCompressBorder":1600,"imageManagerAllowFiles":[".png",".jpg",".jpeg",".gif",".bmp"],"imageManagerListPath":"/ueditor/jsp/upload/image/","fileMaxSize":51200000,"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"],"fileManagerActionName":"listfile","snapscreenInsertAlign":"none","scrawlActionName":"uploadscrawl","videoFieldName":"upfile","imageCompressEnable":true,"videoUrlPrefix":"","fileManagerUrlPrefix":"","catcherAllowFiles":[".png",".jpg",".jpeg",".gif",".bmp"],"imageManagerActionName":"listimage","snapscreenPathFormat":"/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}","scrawlPathFormat":"/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}","scrawlMaxSize":2048000,"imageInsertAlign":"none","catcherPathFormat":"/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}","catcherMaxSize":2048000,"snapscreenUrlPrefix":"","imagePathFormat":"/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}","imageManagerUrlPrefix":"","scrawlUrlPrefix":"","scrawlFieldName":"upfile","imageMaxSize":2048000,"imageAllowFiles":[".png",".jpg",".jpeg",".gif",".bmp"],"snapscreenActionName":"uploadimage","catcherActionName":"catchimage","fileFieldName":"upfile","fileUrlPrefix":"","imageManagerInsertAlign":"none","catcherLocalDomain":["127.0.0.1","localhost","img.baidu.com"],"filePathFormat":"/ueditor/jsp/upload/file/{yyyy}{mm}{dd}/{time}{rand:6}","videoPathFormat":"/ueditor/jsp/upload/video/{yyyy}{mm}{dd}/{time}{rand:6}","fileManagerListSize":20,"imageActionName":"uploadimage","imageFieldName":"upfile","imageUrlPrefix":"","scrawlInsertAlign":"none","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"],"catcherUrlPrefix":"","imageManagerListSize":20,"catcherFieldName":"source","videoAllowFiles":[".flv",".swf",".mkv",".avi",".rm",".rmvb",".mpeg",".mpg",".ogg",".ogv",".mov",".wmv",".mp4",".webm",".mp3",".wav",".mid"]}
				 */
				InputStream inStream = Demo2Controller.class.getResourceAsStream(configPath);
				StringBuilder builder = new StringBuilder();
				try {
					InputStreamReader reader = new InputStreamReader(inStream, "UTF-8");
					BufferedReader bfReader = new BufferedReader(reader);
					String tmpContent = null;
					while ((tmpContent = bfReader.readLine()) != null) {
						builder.append(tmpContent);
					}
					bfReader.close();
				} catch (UnsupportedEncodingException e) {
					e.printStackTrace();
				}
				// 过滤输入字符串, 剔除多行注释以及替换掉反斜杠
				result = builder.toString().replaceAll("/\\*[\\s\\S]*?\\*/", "").replaceAll(" ", "");
				System.out.println("result:" + result);

			} else if ("uploadimage".equals(value)) {// 上传文件
				// 上传成功后返回的json数据
				/*
				 * {"state": "SUCCESS","original": "Hydrangeas.jpg","size": "595284","title":
				 * "1551927256870045443.jpg","type": ".jpg","url":
				 * "/upload/image/20190307/1551927256870045443.jpg"}
				 */

				String originalFilename = upfile.getOriginalFilename();
				String type = originalFilename.substring(originalFilename.indexOf("."), originalFilename.length());
				long size = upfile.getSize();
				System.out.println(originalFilename);
				System.out.println(size);

				SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
				String middlePath = sdf.format(new Date()) + "/";

				String fileFullName = rootPath + middlePath + originalFilename;
				// 图片访问地址(tomcat服务器)
				String url = "http://localhost:8080//" + middlePath + originalFilename;
				try {

					File file = new File(fileFullName);
					if (!file.getParentFile().exists()) {
						file.getParentFile().mkdirs();
					}

					upfile.transferTo(file);

					Map<String, Object> map = new HashMap<String, Object>();
					map.put("state", "SUCCESS");
					map.put("original", originalFilename);
					map.put("size", size);
					map.put("title", originalFilename);
					map.put("type", type);
					map.put("url", url);

					result = JSON.toJSONString(map);
					System.out.println("result : " + result);

				} catch (Exception e) {
					e.printStackTrace();
				}
			}

			PrintWriter writer = response.getWriter();
			writer.write(result);
			writer.flush();
			writer.close();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

三、修改index.jsp中的代码 在 var ue = UE.getEditor('editor'); 下添加红框中的代码

 UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl;
    UE.Editor.prototype.getActionUrl = function(action){
		if(action == '/multipleCarouselFiles')	{
			return '/ueditorDemo/multipleCarouselFiles';
		}else{
			return this._bkGetActionUrl.call(this,action);
		}
	}

然后就是启动项目上传图片啦 

上传成功啦   查看日志会发现自己上传的路径

如果是按照我这个思路来 一般都没有什么问题   出现问题的地方基本上是路径的问题 

在这里我说明一下

重要的4个路径配置:

1、ueditor.config.js 中的 serverUrl  :这个是ueditor发送给服务器获取配置文件的请求

2、自定义或者config.json中的 imageActionName :这个是上传图片请求服务器的接口

3、自定义或者config.json中的 imageUrlPrefix :这个是回显图片的是要请求的图片路径

4、index.jsp 中的如下 :这个是替换上传图片是的action 改为服务器下的  项目名/接口

不然会出现访问错误的情况

 UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl;
    UE.Editor.prototype.getActionUrl = function(action){
        if(action == '/multipleCarouselFiles')    {
            return '/ueditorDemo/multipleCarouselFiles';
        }else{
            return this._bkGetActionUrl.call(this,action);
        }
    }

另外我还配置了上传视频的内容:ueditor上传视频

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值