官网:http://pandao.github.io/editor.md/
var testEditor = editormd("test-editormd", {
width: "90%",
height: 640,
saveHTMLToTextarea: true,
path: "/webjars/editor.md/lib/",
syncScrolling: "single",
//下面这一行将使用dark主题
previewTheme : "dark"
});
配置好dark主题以后,编辑区还是原来的编辑区,预览区已经使用了暗黑模式,但是代码以外的部分也都变成黑色背景了,这不是我想要的,所以我对
editormd.css做了一些修正,将dark主题代码以外的部分取消了样式定义,这样预览起来只有代码块是暗黑模式,截图如下:
${article.text }
有了基本的Markdown功能,集成editor.md就完成了一半了,下面开始处理图片上传。图片上传的语法是![alt](url),这个用来嵌入互联网上现成的图片是很方便的,但是如果想要上传本地图片就要后台代码配合了,我下面以JAVA为例(官方文档有PHP的示例),配合SpringMVC和commons-fileupload-1.3.1.jar,简单给个DEMO:根据Editor.md的官方文档介绍,上传图片功能需要添加一点配置,如下:
editormd("test-editormd", {
width : "90%",
height : 640,
syncScrolling : "single",
path : "<%=request.getContextPath()%>/resources/editormd/lib/",
imageUpload : true,
imageFormats : ["jpg", "jpeg", "gif", "png", "bmp", "webp"],
imageUploadURL : "/uploadfile",
saveHTMLToTextarea : true,
});
//editor.md期望得到一个json格式的上传后的返回值,格式是这样的:
/*
{
success : 0 | 1, // 0 表示上传失败,1 表示上传成功
message : "提示的信息,上传成功或上传失败及错误信息等。",
url : "图片地址" // 上传成功时才返回
}
*/
以上代码并不难理解,也就加了三行配置,关键的是
imageUploadURL : "/uploadFile"这个配置,这里的URL指向了你处理图片上传的action,与之对应的,我的SpringMVC控制器是这样的,这里贴出了整个代码,防止有小伙伴对JAVA以及SpringMVC处理文件上传还不太熟练:
package com.newflypig.jblog.controller;
import java.io.File;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.FileUtils;
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.multipart.MultipartFile;
@Controller
public class UploadController {
@RequestMapping(value="/uploadfile",method=RequestMethod.POST)
public void hello(HttpServletRequest request,HttpServletResponse response,@RequestParam(value = "editormd-image-file", required = false) MultipartFile attach){
try {
request.setCharacterEncoding( "utf-8" );
response.setHeader( "Content-Type" , "text/html" );
String rootPath = request.getSession().getServletContext().getRealPath("/resources/upload/");
/**
* 文件路径不存在则需要创建文件路径
*/
File filePath=new File(rootPath);
if(!filePath.exists()){
filePath.mkdirs();
}
//最终文件名
File realFile=new File(rootPath+File.separator+attach.getOriginalFilename());
FileUtils.copyInputStreamToFile(attach.getInputStream(), realFile);
//下面response返回的json格式是editor.md所限制的,规范输出就OK
response.getWriter().write( "{\"success\": 1, \"message\":\"上传成功\",\"url\":\"/resources/upload/" + attach.getOriginalFilename() + "\"}" );
} catch (Exception e) {
try {
response.getWriter().write( "{\"success\":0}" );
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
这样就完成了图片上传了,上传后,后台action返回了一个url给editor.md,editor.md使用这个url作为你嵌套在文档中的图片url。这样就大功告成了,是不是很爽,要比ueditor的上传配置简单100倍。
使用SpringBoot实现图片文件上传:
在properties文件中配置文件上传key-value:
#默认支持文件上传
spring.http.multipart.enabled =true
spring.http.multipart.file-size-threshold =0
# 上传文件的临时目录
#spring.http.multipart.location=E:/upload/temp/
# 最大支持文件大小
spring.http.multipart.max-file-size =100MB
# 最大支持请求大小
spring.http.multipart.max-request-size =100Mb