1. 程式人生 > >ckeditor5 圖片上傳,tp5整合ckeditor5編輯器使用

ckeditor5 圖片上傳,tp5整合ckeditor5編輯器使用

宣告:所發文章樓主親測並在實際專案中使用的,引入編輯器的時候碰到了不少坑,為了記錄一下,讓自己以後再次使用可以直接ctrl+c ctrl+v而寫,如果這篇文章對你有用就最好了
背景:在編輯器使用的時候最開始是用的wangeditor,主要原因是這貨非常輕量,體積超級小,但是由於公司的同事經常新增內容都是在word文件直接複製貼上的,有很多垃圾樣式wangeditor無法過濾,這個問題搞得我好煩,之前新增的5000+條內容垃圾樣式還要我過濾掉,迫不得已更換編輯器,百度谷歌了很久怎麼幹掉之前新增的內容帶上的word樣式,中途考慮過百度的ueditor(ps之前用過)我覺得太吃藕了,然後也沒用,最後決定用ckeditor5這個外觀還挺好看的,最主要的原因是這貨有自帶過濾複製站街過來的垃圾樣式,然後就開始了踩坑了。

例子:本文以tp5為後端語言整合ckeditor5 圖片上傳

這裡的內容直接賦值貼上過去您的html檔案即可出現兩個編輯器如下圖:
這裡寫圖片描述

溫馨提示:
1.注意:我引入的ckeditor.js是當前版本中最新的ckeditor5 版本哦,如果是4版本或其他版本的不在本文章討論範圍,版本不同可能有很多地方不同的哦,如果不想折騰直接用我這個版本的,按照本文來,其他版本出門左拐,百度,谷歌,看官網文件
2.ckeditor5預設編輯器的高度設定可以通過css樣式來設定初始化ckeditor5的寬度和高度,程式碼如下:

<!--ckeditor5預設編輯器的高度-->
        <style
>
.ck-editor__editable { min-height: 100px; } </style>

3.自定義ckeditor5的選單欄,需要在例項化的時候配置,程式碼的下面例項中有
4.ckditor5上傳圖片,需要返回json資料,欄位return json([‘uploaded’=>true,’url’=>$url]);方可 預覽,成功true,失敗false,這裡我說的是ckditor5上傳圖片的返回值哦,必須回uploaded和url欄位否則無法預覽,圖片會以url的形式儲存到對應的textarea裡面

tp5 ckeditor5編輯器使用例項,程式碼如下:

親們可直接複製程式碼到你的html檔案看效果,關於圖片上傳處理的後端邏輯,我這裡用的是tp5框架,其他語言其他框架,請自行編寫,對於後端的程式猿GG來說這個還是挺簡單,這裡不廢話,只要上傳儲存好圖片,返回編輯器要的欄位就行了

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>ckeditor5編譯器使用</title>
    <script src="http://p9l6ece3c.bkt.clouddn.com/ckeditor.js"></script>
</head>
<body>
<h3>自定義選單欄的ckeditor5編譯器初始化</h3>
    <div class="row cl">
            <div class="formControls col-xs-6 col-sm-6">
               <textarea name="subject" id="ckeditor1"></textarea>
            </div>
        </div>
        <!--ckeditor5預設編輯器的高度-->
        <style>
            .ck-editor__editable {
                min-height: 100px;
            }
        </style>
        <script>
            ClassicEditor.create( ckeditor1,{
            toolbar: ['imageUpload','link'],
                        ckfinder: {
                            uploadUrl : '/admin/Upload/uploadImages?command=QuickUpload&type=Files&responseType=json'
                            //後端處理上傳邏輯返回json資料,包括uploaded(選項true/false)和url兩個欄位
                        }
                    }).then(
            ).catch()
        </script>
<h3>預設選單欄的ckeditor5編譯器初始化</h3>
        <div class="row cl">
            <div class="formControls col-xs-6 col-sm-6">
                <textarea name="description" id="ckeditor2"></textarea>
            </div>
        </div>
        <script>
            ClassicEditor.create( ckeditor2,{
                ckfinder: {
                    uploadUrl : '/admin/Upload/uploadImages?command=QuickUpload&type=Files&responseType=json'
                    //後端處理上傳邏輯返回json資料,包括uploaded(選項true/false)和url兩個欄位
                }
            }).then(
            ).catch()
        </script>
    <!--/**
     * 圖片上傳 written :yangxingyi 2018-06-06 15:35 (ps,這是tp5的上傳圖片寫法,其他編輯器的按要求寫即可)
     */
    public function uploadImages($path=false,$save=false){
        $file = request()->file('upload');
        $path = $path?$path:ROOT_PATH . 'public/tmp/uploads/';
        $save = $save?$save:SITE_URL.'/tmp/uploads/';
        if($file){
            $info = $file->move($path);
            if($info){
                $url = $save.$info->getSaveName();// 成功上傳後 獲取上傳資訊
            }else{
                //$error = $file->getError();
            }
        }
        $url = str_replace("\\","/",$url);//把url的\換成/
       return json(['uploaded'=>true,'url'=>$url]);
    }-->
</body>
</html>