CKEditor5 图片上传前后端

一、CKEditor5 前端依赖:

"@ckeditor/ckeditor5-build-decoupled-document": "^32.0.0",
"@ckeditor/ckeditor5-vue2": "^1.0.5",

二、前端vue:

<template>
  <ckeditor :editor="editor"
            style="height: 100%;overflow: auto;border: #eee solid 2px"
            :config="config"
            v-model="content"
            @ready="onReady"/>
</template>
<script>
import CKEditorDocument from '@ckeditor/ckeditor5-build-decoupled-document';
import '@ckeditor/ckeditor5-build-decoupled-document/build/translations/zh-cn'
import CKEditor from '@ckeditor/ckeditor5-vue2'

export default {
  components: {ckeditor: CKEditor.component},
  props: {value: {type: String}},
  data() {
    return {
      editor: CKEditorDocument,
      content: '',
      config: {
        language: 'zh-cn',
        toolbar: {items: ["heading", "|", "fontfamily", "fontsize", "fontColor", "fontBackgroundColor", "|", "bold", "italic", "underline", "strikethrough", "|", "alignment", "|", "numberedList", "bulletedList", "|", "outdent", "indent", "|", "link", "blockquote", "insertTable", "|", "uploadImage", "undo", "redo"]},
        ckfinder: {
          uploadUrl: '/api/compilationtask/uploadImg?command=QuickUpload&type=Images&responseType=json'
          //后端处理上传逻辑返回json数据,包括uploaded(选项true/false)和url两个字段
        }
      }
    }
  },
  watch: {
    value(v) {
      if (v) {
        this.content = v
      }
    },
    content(v) {
      if (v && v !== this.value) {
        this.$emit('input', v)
      }
    }
  },
  methods: {
    onReady(editor) {
      this.content = this.value
      //显示toolbar
      editor.ui.getEditableElement().parentElement.insertBefore(
          editor.ui.view.toolbar.element,
          editor.ui.getEditableElement()
      );
    }
  }
}
</script>

三、后台:

@RequestMapping("/uploadImg")
public Map uploadImg(@RequestParam(value = "upload", required = false) MultipartFile file) {
    Map<String, Object> map = new HashMap<>();
    String fileFullPath = null;
    try {
        fileFullPath = commonFileConfig.uploadFile("img", file.getInputStream(), UUIDUtils.getUUID() + file.getOriginalFilename());
    } catch (IOException e) {
        e.printStackTrace();
    }
    map.put("uploaded", true);
//  map.put("url", "http://" + localIp + ":" + port + commonFileConfig.getUploadDownLoadPath(fileFullPath));
    map.put("url", commonFileConfig.getUploadDownLoadPath(fileFullPath));
    return map;
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

【这个世界会好的】

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值