ckeditor实现自定义上传视频和图片

记录

官网下载文件夹之后放在publick下,引入在index.html中

展示上传图片按钮
修改内容:(为了展示上传图片的按钮)
在这里插入图片描述

config.js

CKEDITOR.editorConfig = function( config ) {
config.toolbar = [
[‘Save’,‘Preview’,‘-’],
[‘Cut’,‘Copy’,‘Paste’,‘-’, ‘SpellChecker’, ‘Scayt’],
[‘Undo’,‘Redo’,‘-’,‘Find’,‘Replace’,‘-’,‘SelectAll’,‘RemoveFormat’],
[‘Checkbox’, ‘Radio’, ‘TextField’, ‘Textarea’, ‘Select’, ‘Button’, ‘ImageButton’],
‘/’,
[‘Bold’,‘Italic’,‘Underline’,‘Strike’,‘-’,‘Subscript’,‘Superscript’],
[‘NumberedList’,‘BulletedList’,‘-’,‘Outdent’,‘Indent’,‘Blockquote’],
[‘JustifyLeft’,‘JustifyCenter’,‘JustifyRight’,‘JustifyBlock’],
[‘Link’,‘Unlink’,‘Anchor’],
[‘Image’,‘Html5video’,‘Flash’,‘Table’,‘HorizontalRule’,‘SpecialChar’],
‘/’,
[‘Styles’,‘Format’,‘Font’,‘FontSize’],
[‘TextColor’,‘BGColor’]
],
config.image_previewText=’ '; //预览区域显示内容
config.filebrowserImageUploadUrl= “/api/file/upload”; //图片上传接口地址
config.filebrowserUploadUrl = “/api/file/upload” //文件上传接口地址
config.fileTools_requestHeaders = {
‘X-Requested-With’: ‘XMLHttpRequest’,
‘Custom-Header’: ‘header value’
};
config.extraPlugins = ‘html5video’;
config.isFileUploadSupported = true
config.font_names = ‘宋体/宋体;黑体/黑体;仿宋/仿宋_GB2312;楷体/楷体_GB2312;隶书/隶书;幼圆/幼圆;微软雅黑/微软雅黑;’ + config.font_names;
};

富文本组件

<template>
  <div>
    <textarea :id="id" name="content"></textarea>
  </div>
</template>
<script>
import StorageHandler from '@/utils/StorageHandler'
export default {
 name:"ckeditor",
  props: ["content","isEdit"],//从父组件转递的内容
  mounted: function() {
    const self = this;
    // 渲染编辑器
    self.ckeditor = window.CKEDITOR.replace('content',
    {
      height:'280px'
    }
    );//定义编辑器的高度
    self.ckeditor.on('fileUploadRequest', evt => {
      console.log('-----------',evt)
      const { fileLoader } = evt.data;
      const { xhr } = fileLoader;
      const formData = new FormData();
      formData.append('file', fileLoader.file, fileLoader.fileName);
      xhr.open('POST', fileLoader.uploadUrl, true);
      xhr.setRequestHeader('Authorization', this.storageHandler.getStorage("token").token);
      xhr.send(formData);
      evt.stop();
		})
    self.ckeditor.on('fileUploadResponse', evt => {
			evt.stop();
			const data = evt.data
			const fileLoader = data.fileLoader
			const res = JSON.parse(fileLoader.xhr.responseText)
			if (res.code !== 200) {
				data.message = '上传失败'
				evt.cancel();
				return
			}
			data.fileName = fileLoader.fileName
			data.url = res.data.fileUrl
			data.message = '上传成功'
		})

    // 设置初始内容
    self.ckeditor.setData(self.content);
 
    // 监听内容变更事件
    self.ckeditor.on("change", function() {
      self.$emit("sendContnet", self.ckeditor.getData());
    });
    if(this.isEdit != 'new' && this.isEdit != 'edit'){
      self.ckeditor.on('instanceReady', function (ev) {
        this.isloadingFlag = true;
        var ed = ev.editor;
        ed.setReadOnly(true);
      });
    }
    
  },
  methods:{
    setDataFn(){
      setTimeout(()=>{
        this.ckeditor.setData(this.content);
      },800)
    }
  },
  data: function() {
    return {
      id: parseInt(Math.random() * 10000).toString(),
      ckeditor: null,
      isloadingFlag:false,
      storageHandler:new StorageHandler()
    };
  },
  watch: {
    // 监听prop的变化,更新ckeditor中的值
    content: function() {
      if (this.content !== this.ckeditor.getData()) {
        // this.ckeditor.setData(this.content);
        this.setDataFn()
      }
    }
  }
};
</script>
<style scoped>
</style>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在 CKEditor实现自定义图片上传并获取返回值,需要进行以下步骤: 1. 创建一个实现了 UploadAdapter 接口的自定义上传适配器类,并在其中实现 upload() 方法。在 upload() 方法中,可以使用 AJAX 或其他方式将图片上传至服务器,并返回一个 Promise 对象,该对象的 resolve() 方法中包含一个包含图片 URL 的对象。 ```javascript class MyCustomUploadAdapter { constructor(loader) { this.loader = loader; } upload() { return this.loader.file.then(file => { return new Promise((resolve, reject) => { // 使用 AJAX 将图片上传至服务器 // 并在上传成功后调用 resolve() 方法 // 并将包含图片 URL 的对象作为参数传入 resolve({ default: 'http://example.com/image.jpg' }); }); }); } abort() { // 取消上传 } } ``` 2. 在 CKEditor 的配置文件中,使用 config.filebrowserUploadAdapter 属性将自定义上传适配器类与 CKEditor 关联起来。 ```javascript ClassicEditor.create(document.querySelector('#editor'), { // ... filebrowserUploadAdapter: MyCustomUploadAdapter }).then(editor => { console.log('Editor was initialized', editor); }).catch(error => { console.error(error.stack); }); ``` 3. 在需要使用图片的地方,使用 CKEditor 提供的图片插入功能,插入上传图片即可获取返回值。 ```javascript editor.model.change(writer => { const imageElement = writer.createElement('image', { src: 'http://example.com/image.jpg' }); editor.model.insertContent(imageElement); }); ``` 注意:在实际使用中,需要根据具体的需求和服务器端的实现来进行适配器类的编写。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值