美文网首页
CKeditor4 上传图片一条龙服务

CKeditor4 上传图片一条龙服务

作者: 你看到我的小熊了吗 | 来源:发表于2019-11-09 22:59 被阅读0次

CKEditor4

当前版本为CKEditor4.13.0

下载CKEditor4

  1. 选择基础组件(Basic
    我们这里只用到了图片的上传,因此选择基础组件
    进入CKEditor4官网
    选择基础插件

2.选择图片上传插件


选择插件

注意⚠️:选择File Browser

3.下载
将下载好的文件,解压后放入对应的目录中

引入并使用

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>A Simple Page with CKEditor</title>
        <!-- 确保引入的CKEditor文件路径正确 -->
        <script src="../ckeditor.js"></script>
    </head>
    <body>
        <form>
            <textarea name="editor1" id="editor1" rows="10" cols="80">
                This is my textarea to be replaced with CKEditor.
            </textarea>
            <script>
                // 使用CKEditor替换 <textarea id="editor1">
                // 实例化,使用默认配置
                CKEDITOR.replace( 'editor1' );
            </script>
        </form>
    </body>
</html>

相关配置

配置插件

1.展开ckeditor目录找到samples目录下的index.html文件,用浏览器打开

index.html

2.点击右上角的TOOLBAR CONFIGURATOR

TOOLBAR CONFIGURATOR

3.勾选或者取消你想要的插件,然后点击Get toolbar config按钮,得到你想要的配置文件

Get toolbar config

4.复制该配置


配置文件

5.找到ckeditor目录下的config.js文件

config.js

6.将刚复制的配置,粘贴到config.js文件中

添加上传tag

此时点击图片按钮我们发现,仍然不能上传图片


无法上传图片

需要在刚刚的config.js中添加两个配置

  config.extraPlugins = 'uploadimage'
  config.filebrowserImageUploadUrl =
  'https://192.168.0.1/api/ECategoryDetail/UploadImg'
  //filebrowserImageUploadUrl 替换成你需要上传的服务器地址
添加配置

我们再次点击图片按钮时候,便发现弹窗中多了上传的tag

上传按钮

隐藏浏览服务器按钮

浏览服务器按钮

我们可能无法浏览服务器上的图片,当我们点击浏览服务器按钮时,可能会出现空白页面


空白页

因此,为了实际体验,我们可能需要隐藏浏览服务器按钮

image2.js

我们根据ckeditor/plugins/image2/dialogs路径找到image2.js文件
搜索关键字browseServer找到下行

label:f.lang.common.browseServer,hidden:!0

在其中添加style:"display:none",如下:

label:f.lang.common.browseServer,style:"display:none",hidden:!0

效果如下:


隐藏浏览服务器按钮

上传图片时,如何修改上传地址

在上面的配置里,我们添加了一条配置用来上传文件config.filebrowserImageUploadUrl如果不做任何修改,当我们点击上传到服务器时,他会默认使用该地址上传图片。
但这样很不灵活,通过查看文档,我们发现可以通过监听事件fileUploadRequest来做上传前的操作。

editor.on( 'fileUploadRequest', function( evt ) {
     var fileLoader = evt.data.fileLoader,
        formData = new FormData(),
        xhr = fileLoader.xhr;

    xhr.open( 'PUT', fileLoader.uploadUrl, true );
    formData.append( 'upload', fileLoader.file, fileLoader.fileName );
    fileLoader.xhr.send( formData );

    // Prevented the default behavior.
    evt.stop();
} );

修改fileLoader.uploadUrl即可,当然你也可以做其他操作,例如增加或修改消息头。

如何修改服务器的返回结果

服务器返回的结构有时候不是我们想要的,因此,可能需要对之进行修改。通过对事件fileUploadResponse进行监听即可。

editor.on( 'fileUploadResponse', function( evt ) {
    // Prevent the default response handler.
    evt.stop();

    // Get XHR and response.
    var data = evt.data,
        xhr = data.fileLoader.xhr,
        response = xhr.responseText.split( '|' );

    if ( response[ 1 ] ) {
        // An error occurred during upload.
        data.message = response[ 1 ];
        evt.cancel();
    } else {
        data.url = response[ 0 ];
    }
} );

注意⚠️:
对其事件的监听一般放在CKeditor实例完成后instanceReady,因此如下使用:

CKEDITOR.on('instanceReady', function(e) {
      console.log('CKEDITOR初始化', e.editor)

      e.editor.widgets.on('instanceCreated', function(params) {
        console.log('editor创建', params)
      })
      var upload = e.editor.uploadRepository
      upload.on('instanceCreated', function(eve) {
        alert('112233')
      })
      e.editor.on('change', function(change) {
        console.log('change', change)
      })
      e.editor.on( 'fileUploadRequest', function( evt ) {
        console.log(evt)
      }
      e.editor.on( 'fileUploadResponse', function( evt ) {
         console.log(evt)
      }
}

相关文章

网友评论

      本文标题:CKeditor4 上传图片一条龙服务

      本文链接:https://www.haomeiwen.com/subject/mwcobctx.html