springboot+editormd上传图片(超详细,如果有问题可留言,会及时回复哦)

原文地址:http://www.starchou.cn/detail/7
项目地址:https://git.dev.tencent.com/starchou666/myblog.git
先介绍背景:博主在创建这个博客的时候也是个纯小白。虽然本博客在比较早之前就已经可以运行了,但是实际上还有一些小bug没有修复,比如之前无法在编辑器中上传图片。经过一段时间的学习,博主终于学会了springboot环境下文件上传的流程,于是我从上周六开始解决上传图片的bug,今天终于解决啦。
编辑效果如图所示:
springboot+editormd上传图片(超详细,如果有问题可留言,会及时回复哦)_第1张图片

接下来我就介绍下bug修复的详细过程。
第一步:找到路由。
本博客用的是editor_md编辑器,所有路由还是比较好找的。
springboot+editormd上传图片(超详细,如果有问题可留言,会及时回复哦)_第2张图片

第二步:找到对应的控制器方法

springboot+editormd上传图片(超详细,如果有问题可留言,会及时回复哦)_第3张图片
在修改前,这部分里的内容是空的,所以我们点击编辑器的图片上传按钮是不会有效果的。
修改后代码如下:

@ApiOperation("markdown文件上传")
@PostMapping(value = "/uploadfile")
public @ResponseBody Map<String,Object> demo(@RequestParam(value = "editormd-image-file", required = false) MultipartFile file, HttpServletRequest request) {
    Map<String,Object> resultMap = new HashMap<String,Object>();
    //保存
    try {
        File imageFolder= new File(request.getServletContext().getRealPath("img/upload"));
        File targetFile = new File(imageFolder,file.getOriginalFilename());
        if(!targetFile.getParentFile().exists())
            targetFile.getParentFile().mkdirs();
        file.transferTo(targetFile);
//            BufferedImage img = ImageUtil.change2jpg(targetFile);
//            ImageIO.write(img, "jpg", targetFile);
        /*            file.transferTo(targetFile);*/
//            byte[] bytes = file.getBytes();
//            Path path = Paths.get(realPath + file.getOriginalFilename());
//            Files.write(path, bytes);
        resultMap.put("success", 1);
        resultMap.put("message", "上传成功!");
        resultMap.put("url","http://www.starchou.cn/img/upload/"+file.getOriginalFilename());
    } catch (Exception e) {
        resultMap.put("success", 0);
        resultMap.put("message", "上传失败!");
        e.printStackTrace();
    }
    System.out.println(resultMap.get("success"));
    return resultMap;
}

第三步:创建对应的文件夹
在项目文件夹\src\main\下建立webapp文件夹,最终的存储目录应该被创建为src\main\webapp\img\upload,可与代码中的:

File imageFolder= new File(request.getServletContext().getRealPath("img/upload"));

做对应的修改。
然后打包就可以啦,上传的图片会被存储在src\main\webapp\img\upload目录下。

你可能感兴趣的:(springboot,springboot,editormd)