Ckeditor 4 復制粘貼截圖並轉化base64格式保存至數據庫


雖然Ckeditor 中自帶的有上傳圖片和文件的功能,但是有時候我們並不需要把圖片保存至服務器的文件夾中.

反而是截圖復制粘貼,把圖片轉化為base64格式保存在數據庫中即可滿足要求.

 

1.首先下載安裝包(選擇最右邊的,完整的安裝包)

https://ckeditor.com/ckeditor-4/download/#ckeditor4

 

2.把下載的安裝包引入項目中,並在頁面中引用js

 

 

3.自定義配置文件,在文件夾中找到config.js.並配置自己所需要的

 

4.頁面使用一個textarea標簽.並給該標簽賦值id屬性.

然后初始化控件,重寫控件剪切版的復制粘貼方法.此時已配置完成.(此處注意,一定要指定重寫的控件的ckname.否則此處的重寫事件this指的將是整個頁面的所有的Ckeditor.

這樣重寫事件將會出錯.我就在此處犯了這個錯誤折騰了一個多小時....)

代碼

CKEDITOR.replace('description');
SetCKEditor("description", _self.model.Description);

function SetCKEditor(ckname, data) {
  CKEDITOR.instances[ckname].on('instanceReady', function (event) {
  var _data = (data || "");
  if (_data != "") {
    this.setData(HTMLEncode(_data));
  }
  this.document.on("paste", function (e) {//重寫該ckeditor實例的粘貼事件
  var items = e.data.$.clipboardData.items;//獲取該ckeditor實例的所有剪切板數據
  for (var i = 0; i < items.length; ++i) {//循環該數據並只獲取類型為image/png格式的數據
    var item = items[i];
    if (item.kind == 'file' && item.type == 'image/png') {
      var imgFile = item.getAsFile();
      if (!imgFile) {
        return true;
      }
      var reader = new FileReader();
      reader.readAsDataURL(imgFile);//轉化為base64格式
      reader.onload = function (e) {//在控件中插入該圖片
      CKEDITOR.instances["description"].insertHtml('<img src="' + this.result + '" alt="" />');
    }
  return false;
  }
  }
  });
  });
}

5.截圖,並在該控件的剪切板中Ctrl + V .

復制剪切的圖片並轉化為base64格式功能已完成.但是會發現控制台報錯

這個查了一下是因為新版ckeditor增加了雲服務,用於上傳資源用的,而且默認是開啟的,所以只需要關閉相應的插件即可解決該異常

config.removePlugins = 'easyimage,cloudservices';

 

至此Ckeditor控件的復制粘貼圖片,並轉化圖片為base64格式已轉化完成.只需獲取控件的內容保存至數據庫即可.

 

此處也可參考

ckeditor控件的官方文檔

https://ckeditor.com/docs/ckeditor4/latest/api/index.html

這個頁面有ckeditor控件的實現原理,以及代碼

https://www.cnblogs.com/happen-/p/8350557.html

https://blog.csdn.net/jiangzeyin_/article/details/75193587

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM