美文网首页
UEditor+Spring boot+thymeleaf自定义

UEditor+Spring boot+thymeleaf自定义

作者: 小偷阿辉 | 来源:发表于2019-03-12 13:51 被阅读0次

    1.首先引入ueditor的js文件(我这里使用了thymeleaf模版引擎)

    image.png

    2.前后端通信相关的配置--config.json(也就是定义富文本的上传文件等操作的action,后续js中我们根据触发的action定义上传文件的rest接口)

    { /* "basePath":"E:/", */ /* 上传文件的基本路径 */ /* 上传图片配置项 */ "imageActionName": "uploadimage", /* 执行上传图片的action名称 */ "imageFieldName": "upfile", /* 提交的图片表单名称 */ "imageMaxSize": 2048000, /* 上传大小限制,单位B */ "imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 上传图片格式显示 */ "imageCompressEnable": true, /* 是否压缩图片,默认是true */    "imageCompressBorder": 1600, /* 图片压缩最长边限制 */ "imageInsertAlign": "none", /* 插入的图片浮动方式 */ "imageUrlPrefix": "", /* 图片访问路径前缀 */ "imagePathFormat": "ueditor/image/imgs/{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": "ueditor", /* 图片访问路径前缀 */ "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/image/imgs/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ "videoUrlPrefix": "", /* 视频访问路径前缀 */ "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": "", /* 文件访问路径前缀 */ "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": "", /* 图片访问路径前缀 */ "imageManagerInsertAlign": "none", /* 插入的图片浮动方式 */ "imageManagerAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 列出的文件类型 */ /* 列出指定目录下的文件 */ "fileManagerActionName": "listfile", /* 执行文件管理的action名称 */ "fileManagerListPath": "/ueditor/jsp/upload/file/", /* 指定要列出文件的目录 */ "fileManagerUrlPrefix": "", /* 文件访问路径前缀 */ "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" ] /* 列出的文件类型 */
    }
    

    3.自定义上传文件和读取文件的Controller(这里我使用了七牛云作为存储部署)

    @Controller
    public class UEditorController {
        @Autowired
        private IFastConfig ifastConfig;
        @Autowired
        private QiNiuOSSService qiNiuOSS;
    
        @RequestMapping("/aa")
        private String showPage() {
            return "ueditor/ueditor";
        }
    
        @RequestMapping(value = "/uploadimg")
        @ResponseBody
        public String uploadimg(HttpServletRequest request, HttpServletResponse response) throws IOException {
            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
            MultipartFile file = multipartRequest.getFile("upfile");
            
            // 上传图片
            String fileName = file.getOriginalFilename();
            fileName = FileUtil.renameToUUID(fileName);
    
            byte[] uploadBytes = file.getBytes();
            fileName = fileName.substring(0, fileName.indexOf(".")) + "-" + System.currentTimeMillis()
                    + fileName.substring(fileName.indexOf("."));
            fileName = ifastConfig.getProjectName() + "/" + DateUtils.format(new Date(), DateUtils.DATE_TIME_PATTERN_8)
                    + "/" + fileName;
            String url = qiNiuOSS.upload(uploadBytes, fileName);
            
            State state = new BaseState(true);
            state.putInfo( "size", file.getSize() );
            state.putInfo( "title", file.getOriginalFilename() );
            state.putInfo("type", FileType.getSuffixByFilename(file.getOriginalFilename()));
            state.putInfo("original", file.getOriginalFilename());
            state.putInfo("url", url);
            return state.toJSONString();
            
            //返回格式
    //          {
    //          "state": "SUCCESS",
    //          "original": "80px - \u526f\u672c (2).jpg",
    //          "size": "13252",
    //          "title": "1465731377326075274.jpg",
    //          "type": ".jpg",
    //          "url": "/ueditor/jsp/upload/image/20160612/1465731377326075274.jpg"
    //          }
            
        }
    
        @RequestMapping(value = "/ueditor/config")
        public void config(HttpServletRequest request, HttpServletResponse response) throws JSONException {
            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();
            }
    
        }
    
    
    
    }
    
    

    4.下面自定义 UEditor 的工具栏 还有自定义图片上传配置

    //UE.delEditor('editor');
                var ue=UE.getEditor('editor',{toolbars: [[
                        'fullscreen', 'source', '|', 'undo', 'redo', '|',
                        'simpleupload',
                        'bold', 'italic', 'underline', 'fontborder', 'strikethrough', 'superscript', 'subscript', 'removeformat', 'formatmatch', 'autotypeset', 'blockquote', 'pasteplain', '|', 'forecolor', 'backcolor', 'insertorderedlist', 'insertunorderedlist', 'selectall', 'cleardoc', '|',
                        'rowspacingtop', 'rowspacingbottom', 'lineheight', '|',
                        'customstyle', 'paragraph', 'fontfamily', 'fontsize', '|',
                        'directionalityltr', 'directionalityrtl', 'indent', '|',
                        'justifyleft', 'justifycenter', 'justifyright', 'justifyjustify', '|', 'touppercase', 'tolowercase', '|',
                        'link', 'unlink', 'anchor', '|', 'imagenone', 'imageleft', 'imageright', 'imagecenter', '|',
                        'emotion', 'scrawl', 'pagebreak', 'template', '|',
                        'horizontal', 'date', 'time', 'spechars', 'snapscreen', '|',
                        'inserttable', 'deletetable', 'insertparagraphbeforetable', 'insertrow', 'deleterow', 'insertcol', 'deletecol', 'mergecells', 'mergeright', 'mergedown', 'splittocells', 'splittorows', 'splittocols', 'charts', '|',
                        'print', 'preview', 'searchreplace', 'help'
                    ]]});
                UE.getEditor('editor', {
                    initialFrameWidth: null,//设置为null即可
                    initialFrameHeight: 425,
                });
    
                UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl;
                UE.Editor.prototype.getActionUrl = function(action) {
                    if (action == 'uploadimage' || action == 'uploadscrawl' ) {
                                            //ctx是上下文,uploadimg是上传图片的Controller 
                        return ctx + 'uploadimg';
                    } else if (action == 'uploadvideo') {
                        return '';
                    } else {
                        return this._bkGetActionUrl.call(this, action);
                    }
                }
                UE.getEditor('editor').addListener("blur",function(editor){
                    var content=UE.getEditor('editor').getContent();
                    $("#prizeDesc").val(content);
                });
    
    

    5.献上效果图


    富文本.png

    相关文章

      网友评论

          本文标题:UEditor+Spring boot+thymeleaf自定义

          本文链接:https://www.haomeiwen.com/subject/cwugpqtx.html