Laravel-Admin中添加富文本编辑器CKeditor并可以上传图片

昨天项目需要针对Laravel-Admin更换富文本编辑器,选定采用的富文本编辑器为CKEditor4,并且编辑器需要实现可以直接上传图片,找了好多资料铜鼓了半天,终于搞定,并且可以直接将图片传到OSS中,只要之前已经对OSS正确配置为Admindisk即可,特此记录。

  1. 首先按着Laravel-Admin的官方文档的扩展进行设置
  2. 上述按章官方的文档进行设置后,可以调出富文本编辑器,可以编辑文字,但是无法上传图片到富文本中,需要在下载的CKEditor的文件目录下找到config.js,添加如下代码:
 config.filebrowserImageUploadUrl = '/ckeditor/upload?opener=ckeditor&type=images';

ckeditor/plugins/image/dialogs/image.js中搜索并更改hidden:false

id:"Upload",hidden:!0
//更改为
id:"Upload",hidden:false
  1. 下面需要编写对应图片接收控制器,先用artisan生成一个控制器并设置好路由
php artisan make:controller CkeditorUploadController

web.php中设置好对应路由

Route::post('ckeditor/upload','CkeditorUploadController@uploadImage');

编写控制器内容

	public function uploadImage(Request $request)
    {

          $image = request()->file('upload');
        //保存到当前默认disk
        $path = $image->store('images');
        
        //保存到本地或者选定特定的disk
//      $path = Storage::disk('public')->put('images',$image);
        $url = Storage::disk('public')->url($path);

        $callback = $request->input("CKEditorFuncNum");
        $CKEditor = $request->input('CKEditor');

        return "";
//        return ''


    }
  1. 上传图片测试,发现是500错误,一脸懵逼,感觉应该是回调返回的内容不对,直到google到参考5,config.js中添加
    config.filebrowserUploadMethod = 'form';

世界都清静了,泪流满面呀!

参考资料:
[1] http://laravel-admin.org/docs/zh/model-form-field-management
[2]https://github.com/tmtfns/laravel-ckeditor/blob/master/app/Http/Controllers/TextImageController.php
[3] https://ckeditor.com/docs/ckeditor4/latest/guide/dev_file_upload.html
[4] https://blog.csdn.net/alistring/article/details/55510907
[5] https://segmentfault.com/q/1010000007678160
[6] https://www.jianshu.com/p/1a620cafdf7c
[7] https://coderwall.com/p/xs1rsa/image-uploads-with-ckeditor-and-laravel
[8] https://stackoverflow.com/questions/49390242/how-to-return-ckeditorfuncnum (点睛链接)

你可能感兴趣的:(Laravel,PHP)