700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > bootstrap summernote富文本编辑器图片上传干货分享

bootstrap summernote富文本编辑器图片上传干货分享

时间:2023-04-24 10:13:06

相关推荐

bootstrap summernote富文本编辑器图片上传干货分享

个人技术网站欢迎关注

今天做后台的时候需要一个富文本编辑器组件,由于项目使用的是bootstrap,所以毫不犹豫的用上了summernote富文本编辑器。文档各大大牛已经整理出来了 但是图片上传到服务器这块比较杂 大部分都是说上传到服务器的图片格式是base64的,但是我使用base64接收的时候看了下控制台竟然是二进制上传 、、、lol 上传方法白写了,至此在这里做个记录 方便自己谨记和有需要的人使用

第一步 加载富文本编辑器

<!doctype html><html><head><meta charset="utf-8"><title>编辑器</title><link href="/css/bootstrap.min.css?v=3.3.6" th:href="@{/css/bootstrap.min.css?v=3.3.6}" rel="stylesheet"><link href="/summernote/summernote.css" rel="stylesheet" th:href="@{/summernote/summernote.css}"/><script src="/js/jquery.min.js?v=2.1.4" th:src="@{/js/jquery.min.js?v=2.1.4}"></script><script src="/js/bootstrap.min.js?v=3.3.6" th:src="@{/js/bootstrap.min.js?v=3.3.6}"></script><script src="/summernote/summernote.js" th:src="@{/summernote/summernote.js}"></script><script src="/summernote/lang/summernote-zh-CN.js" th:src="@{/summernote/lang/summernote-zh-CN.js}"></script> <!-- 中文--><style>.m{ width: 500px; margin-left: auto; margin-right: auto; }</style><script type="text/javascript" th:inline="javascript">/*<![CDATA[*/var ctxPath = /*[[@{/}]]*/ '';/*]]>*/console.info(ctxPath);</script><script>$(document).ready(function() {$('.summernote').summernote({ height: 500,tabsize: 2,lang: 'zh-CN',callbacks: { onImageUpload: function(files) { //the onImageUpload API console.log("图片上传"+files[0]);img = sendFile(files[0]); } } }); });function sendFile(file) { data = new FormData(); data.append("file", file);$.ajax({ data: data, type: "POST", url: ctxPath+"/common/sysFile/upload",cache: false, contentType: false, processData: false, success: function(data) {console.log(data);$(".summernote").summernote('insertImage', ctxPath+data.fileName, 'image name'); // the insertImage API} }); } </script></head><body><div class="m"> <div class="summernote">summernote 1</div></div></body></html>

这一步网上的文档很详细 一些路径请自己根据项目需要配置

2 服务端上传接口

@ResponseBody@PostMapping("/upload")R upload(@RequestParam("file") MultipartFile[] file, @RequestParam(value = "type", defaultValue = "0") String type, HttpServletRequest request) throws IOException {if ("test".equals(getUsername())) {return R.error(1, "演示系统不允许修改,完整体验请部署程序");}type = type==null||type==""?type="2":type;LOGGER.info(">>>>>>>>>>>>>>>>>>>>> {}", type);Date createTime = new Date();if (null != file && file.length > 0) {//遍历并保存文件for (MultipartFile files : file) {if (file != null) {//取得当前上传文件的文件名称String fileName = files.getOriginalFilename();//如果名称不为“”,说明该文件存在,否则说明该文件不存在if (type.equals("1")) {//OSS方式上传文件String suffix = files.getOriginalFilename().substring(files.getOriginalFilename().lastIndexOf("."));String url = ossService.build().uploadSuffix(files.getBytes(), suffix);//保存文件信息fileName = FileUtil.renameToUUID(fileName);SysFile sysFile = new SysFile(FileType.fileType(fileName), url, new Date(), getUserId());if (sysFileService.save(sysFile) > 0) {LOGGER.info(">>>>>>>>>>>>>OSS上传图片路径 {}", url);return R.ok().put("fileName", sysFile.getUrl());}} else {//本地上传图片方式fileName = FileUtil.renameToUUID(fileName);SysFile sysFile = new SysFile(FileType.fileType(fileName), "/files/" + fileName, new Date(), getUserId());try {FileUtil.uploadFile(files.getBytes(), bootdoConfig.getUploadPath(), fileName);} catch (Exception e) {return R.error();}if (sysFileService.save(sysFile) > 0) {LOGGER.info(">>>>>>>>>>>>>本地上传图片路径 {}", "/files/" + fileName);return R.ok().put("fileName", sysFile.getUrl());}}}}} else {return R.error("上传文件不能为空");}return R.ok();}

这一步就是个简单的二进制上传接口 有需要的根据自己项目需要更改

最后来一张debug效果图

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。