如何上传图片并以base64格式嵌入ckeditor5中?

时间:2019-05-14 19:52:45

标签: asp.net-mvc ckeditor ckeditor5

我使用的是ckeditor 5 classic,这是我拥有的:

  ClassicEditor.create(document.querySelector('#editor'), 
        {
            toolbar: ['imageUpload', .....],

            ckfinder: {
                uploadUrl: '/CKEditorUpload/UploadImage'
         }
    }) 

然后,我创建了自己的服务器端控制器,并且能够获取数据并将文件保存在服务器上。我传回了JSON,ckeditor 5能够成功插入图像。

  return Json(new {uploaded="true", url="/uploads/xxxxx.jpeg"}); 

在JSON中,成功的响应如下所示:

{
  "uploaded": "true",
  "url": "/uploads/xxxxx.jpeg"
}

但是,我真正想要的是对图像进行base64编码,然后将其返回给ckeditor 5,以便将其嵌入:

 <img src="data:image/jpeg;base64, xxxxxxxxx" />

确实,我在ckeditor 4中成功做到了这一点,但是对于ckeditor 5,不再有“ window.parent.CKEDITOR.tools.callFunction”了。我的服务器控制器如何将base64数据正确返回给客户端,以便Ckeditor 5能够嵌入它?预先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我弄清楚了自己...在C#中,这就是我将Controller中的编码数据返回给客户端的方式,并且它可以正常工作。

var data= "data:image/png;base64,xxxxxxxxxxxxxxxxxxx";            
return Json(new { uploaded = "true", url = HttpUtility.JavaScriptStringEncode(data ?? "") });

换句话说,JSON消息看起来像这样。我没想到“ URL”会占用base64。无论如何,它都能正常工作。希望这对其他人有帮助。

{
 "uploaded": "true",
 "url": "data:image/png;base64,xxxxxxxxxxxxxxxxxxx"
}