javascript - CKEditor - 无需上传到服务器的图像预览

标签 javascript ckeditor

我正在使用上传图片插件来实现“拖放以插入图片”功能。当我将图像放入编辑区域时,图像会上传到服务器,然后使用返回的 url 显示预览。

但我需要在不上传到服务器的情况下在编辑区显示图像预览。当我点击自定义提交按钮时,我想将包括图像在内的全部内容保存到服务器。

如果有人对此做过/有任何想法,请告诉我。

提前致谢。

湿婆

最佳答案

这很简单。 UploadWidget 是一个从拖放的图像中创建内容的助手:http://docs.ckeditor.com/#!/api/CKEDITOR.fileTools-method-addUploadWidget

有定义属性 loadMethod 可以是 load - 这正是您需要的选项: http://docs.ckeditor.com/#!/api/CKEDITOR.fileTools.uploadWidgetDefinition-property-loadMethod

然后,您可以根据 UploadWidget 中的 fileReader 示例覆盖上传图片小部件或创建您自己的小部件。

代码应该是这样的:

CKEDITOR.fileTools.addUploadWidget( editor, 'imageReader', {
    loadMethod: 'load',
    supportedTypes: /image\/(jpeg|png|gif|bmp)/,

    fileToElement: function( file ) {
        var img = new CKEDITOR.dom.element( 'img' );
        img.setAttribute( 'src', loadingImage );
        return img;
    },

    onLoaded: function( loader ) {
        this.replaceWith( '<img src="' + loader.data + '" '>' );
    }
} );

// Black rectangle which is shown before the image is loaded.
var loadingImage = 'data:image/gif;base64,R0lGODlhDgAOAIAAAAAAAP///yH5BAAAAAAALAAAAAAOAA4AAAIMhI+py+0Po5y02qsKADs=';

唯一可能不起作用的部分是 notification据我所知,集成监听上传事件。如果您需要通知,则需要手动添加。

关于javascript - CKEditor - 无需上传到服务器的图像预览,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36678997/

相关文章:

JavaScript 内联事件或事后添加事件

javascript - 使用 Web Workers 使用 native Canvas 函数进行绘图

javascript - 如何仅在日期输入不是星期日时才提交表单?

jquery - 使用 jQuery 同步 CKEditor 和 TEXTAREA

laravel - Html 标签在 ckeditor 之后显示

ckeditor - 基于 div 的编辑器

iframe - 从 DOM 中删除并再次添加时,CKEditor 会丢失内容

php - CKEditor如何对HTML所见即所得编辑器进行编码?

javascript - 如何在 jquery 中为 n 级菜单动态创建 ul li 列表?

javascript - 使用 Firebase 存储上传 base64 图像