利用springboot做后端接口,VUE做前端,现在有用到ueditor编辑器,目前出现很多问题,现在独自记录下来,以便后期记录。
首先,ueditor采用的是vue-ueditor-wrap!作者替我们修正了很多ueditor的BUG。
前端部署,我们就按照vue-ueditor-wrap说明的部署,这里主要讲述用springboot怎么搭建后端。
目前实现的只有上穿图片和涂鸦的功能。重点就是将图片获取到后,进行自定义处理,主要采用MultipartFile的方式进行存储,这个百度一下,一大堆,这里主要体现的是接收ueditor编辑器传递过来的操作。
直接上代码:
package com.syiti.hts.oss.controller; import com.syiti.hts.oss.dto.UeditorDto; import com.syiti.hts.oss.dto.UploadFileDto; import com.syiti.hts.oss.service.IUploadFileService; import com.syiti.hts.oss.service.IUploadImagesService; import com.syiti.hts.oss.util.FileUploadUtil; import com.syiti.hts.oss.util.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import javax.servlet.http.HttpServletRequest; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Enumeration; import java.util.HashMap; import java.util.Iterator; import java.util.Map; /** * @Author: chenrd * @Date: 2019/8/22 10:00 */ @RestController @RequestMapping("ueditor") public class UeditorController { @Autowired private IUploadFileService iuploadFileService; @Autowired private IUploadImagesService iUploadImagesService; @RequestMapping("index") @ResponseBody public Object ueditor(HttpServletRequest request, String callback, String action) { UeditorDto ueditorDto = new UeditorDto(); switch (action) { case "config": // 此处即为获取配置文件的case String config = getUeditorConfig(); return (callback + "(" + config + ");"); case "uploadimage": MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Iterator it = multipartRequest.getFileNames(); while(it.hasNext()) { MultipartFile file = multipartRequest.getFile(it.next().toString()); if(file != null) { Map<Integer, String> map = iUploadImagesService.uploadImage(file); if(map.get(1) != null){ //上传成功 ueditorDto.setState("SUCCESS"); ueditorDto.setTitle(file.getOriginalFilename()); ueditorDto.setUrl(map.get(1)); ueditorDto.setOriginal(file.getOriginalFilename()); }else{ ueditorDto.setState("ERROR"); } } } return ueditorDto; case "uploadscrawl": try { String upfile = request.getParameter("upfile"); if(upfile != null) { //注意!ueditor上传过来的base64并无前面的“data:image/jpeg;base64,”,所有我们需要自行补充。 MultipartFile file = FileUploadUtil.base64ToMultipart("data:image/jpeg;base64,"+upfile); Map<Integer, String> map = iUploadImagesService.uploadImage(file); if (map.get(1) != null) { //上传成功 ueditorDto.setState("SUCCESS"); ueditorDto.setTitle("scrawl.jpg"); ueditorDto.setUrl(map.get(1)); ueditorDto.setOriginal(map.get(1)); } else { ueditorDto.setState("ERROR"); } } }catch (Exception e){ e.printStackTrace(); ueditorDto.setState("ERROR"); } return ueditorDto; } return null; } /** * 返回ueditor的配置文件 * @return */ private String getUeditorConfig() { StringBuilder config = new StringBuilder(); try { //此处即为获取配置文件,因为springboot的原因,目前我只能用流来获取文件内容 InputStream stream = getClass().getClassLoader().getResourceAsStream("ueditor-config.json"); BufferedReader buff = new BufferedReader(new InputStreamReader(stream)); String temp = null; while ((temp = buff.readLine()) != null) { config.append(temp); } //把配置文件中的注释去掉 String configStr = config.toString().replaceAll("/\\*[\\s\\S]*?\\*/", ""); return configStr; } catch (Exception e) { return null; } } }
end!