BootStrap富文本编辑器Summernote

type: ‘POST’,

data: formData,

processData: false,

contentType: false,

success: function (data) {

//图片插入到summernote中

$(“#summernote”).summernote(‘insertImage’, data);

},

error: function () {

alert(“上传失败”)

}

})

},

//清除word复制的格式

onPaste: function (ne) {

var bufferText = ((ne.originalEvent || ne).clipboardData || window.clipboardData).getData(‘Text/plain’);

ne.preventDefault ? ne.preventDefault() : (ne.returnValue = false);

setTimeout(function () {

document.execCommand(“insertText”, false, bufferText);

}, 10);

}

}

});

});

toolbar设置工具栏功能控件,可以自定义,也可以使用默认的。

Summernote工具栏所有属性。

  • 插入

  • picture: 打开图像对话框

  • link: 打开链接对话框

  • video: 打开视频对话框

  • table: 插入表格

  • hr: 插入水平线

  • 字体样式

  • fontname: 设置字体系列

  • fontsize: 设置字体大小

  • color: 设置前景色和背景色

  • forecolor: 设置前景色

  • backcolor: 设置背景色

  • bold: 切换字体粗细

  • italic: 斜体

  • underline: 切换下划线

  • strikethrough: 切换删除线

  • superscript: 切换上标

  • subscript: 切换下标

  • clear: 清除字体样式

  • 段落样式

  • style: 格式化所选块

  • ol: 切换有序列表

  • ul: 切换无序列表

  • paragraph: 段落对齐下拉菜单

  • height: 设置行高

  • 杂项

  • fullscreen: 切换全屏编辑模式

  • codeview: 切换所见即所得和html编辑模式

  • undo: 撤消

  • redo: 重做

  • help: 打开帮助对话框

onImageUpload覆盖图片上传处理属性,默认会把图片转换为Base64格式,onImageUpload中可以设置用AJAX请求上传图片到本地。

后台图片上传imgUpload()方法,代码如下。

/**

  • 图片上传

  • @param file

  • @return

*/

@RequestMapping(value = “/imgUpload”)

@ResponseBody

private Object imgUpload(MultipartFile file) {

String uuid = UUID.randomUUID().toString()+“.jpg”;

fileService.saveFile(file, uuid);

return “http://localhost:8080/bootstrap/textEdit/download?uuid=”+uuid;

}

/**

  • 图片下载

  • @param uuid

  • @param request

  • @param response

*/

@RequestMapping(value = “/download”)

@ResponseBody

private void download(String uuid, HttpServletRequest request, HttpServletResponse response) {

fileService.download(uuid, request, response);

}

上传成功返回下载地址,用于图片回显。

saveFile上传方法,download图片下载方法。代码如下。

// 图片存放位置

private final static String IMAGEPATH=“E:\bootstrap\image”;

//保存图片

@Transactional

public boolean saveFile(MultipartFile file, String uuid){

try{

File path = path(file.getContentType());

String filename = file.getOriginalFilename();

SysFile fileEntity = new SysFile();

fileEntity.setFileName(filename);

fileEntity.setUuid(uuid);

String storeaddress = path.getAbsolutePath();

fileEntity.setStoreaddress(storeaddress);

File saveFile = new File(path,uuid);

try {

fileRepository.save(fileEntity);

file.transferTo(saveFile);

return true;

} catch (IllegalStateException | IOException e) {

e.printStackTrace();

return false;

}

}catch (Exception e){

System.out.println(“图片保存异常”);

return false;

}

}

//图片地址是否存在

private File path(String filename) {

File pat=new File(“E:\bootstrap”);

File path=new File(SysFileService.IMAGEPATH);

if(!pat.isDirectory()) {

pat.mkdir();

}

if(!path.isDirectory()) {

path.mkdir();

}

return path;

}

/**

  • 下载

  • @param uuid

  • @param request

  • @param response

*/

public void download(String uuid, HttpServletRequest request, HttpServletResponse response) {

SysFile fileentity = fileRepository.findByUuid(uuid);

String filename = fileentity.getFileName();

filename = getStr(request, filename);

File file = new File(fileentity.getStoreaddress(), uuid);

if(file.exists()) {

FileInputStream fis;

try {

fis = new FileInputStream(file);

response.setContentType(“application/x-msdownload”);

response.addHeader(“Content-Disposition”, “attachment; filename=” + filename );

ServletOutputStream out = response.getOutputStream();

byte[] buf = new byte[2048];

int n = 0;

while((n = fis.read(buf))!=-1){

out.write(buf, 0, n);

}

fis.close();

out.flush();

out.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

}

private String getStr(HttpServletRequest request, String fileName) {

String downloadFileName = null;

String agent = request.getHeader(“USER-AGENT”);

try {

if(agent != null && agent.toLowerCase().indexOf(“firefox”) > 0){

//downloadFileName = “=?UTF-8?B?” + (new String(Base64Utils.encode(fileName.getBytes(“UTF-8”)))) + “?=”;

//设置字符集

downloadFileName = “=?UTF-8?B?” + Base64Utils.encodeToString(fileName.getBytes(“UTF-8”)) + “?=”;

}else{

downloadFileName = java.net.URLEncoder.encode(fileName, “UTF-8”);

}

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

return downloadFileName;

}

上传成功后 $(“#summernote”).summernote(‘insertImage’, data);方法将图片插入到summernote中,data为返回的下载路径。可以看上传的后台方法。

如果没有定义onImageUpload属性,Summernote会自动把图片转换为Base64格式。

onPaste清除word复制过来的格式。

渲染完成后一个完美的富文本编辑器就出来了。

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
轻大家的负担。**

[外链图片转存中…(img-8r46L4Zv-1715618577379)]

[外链图片转存中…(img-ZxXUstTx-1715618577380)]

[外链图片转存中…(img-4KXaPwkt-1715618577380)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值