当前位置:首页 > CMS教程 > 其它CMS > 列表

Laravel5.6框架使用CKEditor5相关配置详解

发布:smiling 来源: PHP粉丝网  添加日期:2021-12-07 09:57:28 浏览: 评论:0 

本文实例讲述了Laravel5.6框架使用CKEditor5相关配置,分享给大家供大家参考,具体如下:

Laravel 相关配置

文件的上传与存储

参考文档:

https://laravel-china.org/docs/laravel/5.6/requests/1367#1d60f1

https://laravel-china.org/docs/laravel/5.6/filesystem/1390

https://docs.ckeditor.com/ckeditor4/latest/guide/dev_file_upload.html#response-file-uploaded-successfully

创建符号链接

php artisan storage:link

project/public/storage -> project/storage/app/public

修改配置文件config/filesystem.php

'default' => env('FILESYSTEM_DRIVER', 'public')

修改nginx和php的配置文件中上传内容大小的限制

  1. #修改nginx配置文件 
  2. vim /usr/local/nginx/conf/nginx.conf 
  3. http { 
  4.   include    mime.types; 
  5.   default_type application/octet-stream; 
  6.   client_max_body_size 10M; 
  7.   ..... 
  8. #重启nginx 
  9. /usr/local/nginx/sbin/nginx -s reload 
  10. #修改php-fpm配置文件 
  11. vim /usr/local/etc/php/7.2/php.ini 
  12. post_max_size = 20M 
  13. upload_max_filesize = 20M 
  14. #重启php-fpm 
  15. /usr/local/sbin/php72-fpm restart 

编写文件处理方法

  1. /** 
  2.  * 处理上传文件 
  3.  * @return [type] [description] 
  4.  */ 
  5. public function uploadFile(Request $request){ 
  6.   $postFile = 'upload'
  7.   $allowedPrefix = ['jpg','png','doc','docx','xls','xlsx','zip','ppt','pptx','rar','pdf']; 
  8.   //检查文件是否上传成功 
  9.   if(!$request->hasFile($postFile) || !$request->file($postFile)->isValid()){ 
  10.     return $this->CKEditorUploadResponse(0,'文件上传失败'); 
  11.   } 
  12.   $extension = $request->file($postFile)->extension(); 
  13.   $size = $request->file($postFile)->getClientSize(); 
  14.   $filename = $request->file($postFile)->getClientOriginalName(); 
  15.   //检查后缀名 
  16.   Log::info('extension',[$filename=>$extension]); 
  17.   if(!in_array($extension$allowedPrefix)){ 
  18.     return $this->CKEditorUploadResponse(0,'文件类型不合法'); 
  19.   } 
  20.   //检查大小 
  21.   Log::info('size',[$filename=>$size]); 
  22.   if($size > 10*1024*1024){ 
  23.     return $this->CKEditorUploadResponse(0,'文件大小超过限制'); 
  24.   } 
  25.   //保存文件 
  26.   $path = '/storage/'.$request->file($postFile)->store('images'); 
  27.   return $this->CKEditorUploadResponse(1,'',$filename,$path); 
  28. /** 
  29.  * CKEditor 上传文件的标准返回格式 
  30.  * @param [type] $uploaded [description] 
  31.  * @param string $error  [description] 
  32.  * @param string $filename [description] 
  33.  * @param string $url   [description] 
  34.  */ 
  35. private function CKEditorUploadResponse($uploaded,$error='',$filename='',$url=''){ 
  36.   return [ 
  37.     "uploaded" => $uploaded
  38.     "fileName" => $filename
  39.     "url" => $url
  40.     "error" => [ 
  41.       "message" => $error 
  42.     ] 
  43.   ]; 

路由配置

  1. #文件上传路由 
  2. Route::post('/create/uploadFile','Admin\Articles\CreateController@uploadFile'); 
  3. #从word中复制内容时,自动上传图片路由 
  4. Route::post('/create/uploadFile&responseType=json','Admin\Articles\CreateController@uploadFile'); 

CKEditor相关配置

CKEditor配置参数:https://docs.ckeditor.com/ckeditor4/latest/api/CKEDITOR_config.html

  1. CKEDITOR.replace('content',{ 
  2.   height:500, 
  3.   fileTools_requestHeaders : { 
  4.     'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'
  5.   }, 
  6.   isFileUploadSupported : true, 
  7.   filebrowserUploadUrl : '/create/uploadFile'
  8.   language : 'zh-cn',  
  9. });  

Laravel-CSRF保护

相关文档:

https://laravel-china.org/docs/laravel/5.6/csrf/1365

https://docs.ckeditor.com/ckeditor4/latest/api/CKEDITOR_config.html#cfg-fileTools_requestHeaders

首先,在页面head部分添加csrf参数

<!-- CSRF Token -->

<meta name="csrf-token" content="{{ csrf_token() }}">

然后,为CKEditor编辑器的xhr请求增加请求头参数

  1. fileTools_requestHeaders : { 
  2.   'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'

隐藏“浏览服务器”按钮

Laravel5.6 CKEditor5

“浏览服务器”按钮,用于实现对已上传文件的管理,可以借助CKFinder实现,由于目前没有该需求,并且引入该功能会导致文件安全问题,本文采用了隐藏该按钮的方案。

参考附录:ckeditor隐藏“浏览服务器”按钮

基本思路是从一下三个文件中,查找关键字browseServer,通过设置display属性隐藏该按钮。

ckeditor/plugins/image/dialogs/image.js

ckeditor/plugins/flash/dialogs/flash.js

ckeditor/plugins/link/dialogs/link.js

image

Laravel5.6 CKEditor5

flash

Laravel5.6 CKEditor5

link

Laravel5.6 CKEditor5

附录:ckeditor隐藏“浏览服务器”按钮

由于ckeditor中的"上传图片""上传文件""上传FLASH” 三个功能中都有“浏览服务器”按钮,所以我们要修改3个JS文件,先打开ckeditor文件夹中的ckeditor\plugins\image\dialogs\image.js文件,CTRL+F,搜索"browseServer”,找到该词第一次出现的位置,在后面添加双引号内的内容",style:'display:none;'"。如下图:

Laravel5.6 CKEditor5

再搜索"filebrowser",找到该词第二次出现的位置,如下图填入

Laravel5.6 CKEditor5

CTRL+S保存该JS文件,出去刷新下自己的ckeditor,点击图片上传按钮后,你会发现浏览服务器按钮不见了。

下面去弄掉文件上传中的“浏览服务器”按钮。

打开ckeditor\plugins\link\dialogs\link.js文件,还是搜索"browseServer"第一次出现的地方,如下图插入双引号内的内容",style:'display:none;'"。

Laravel5.6 CKEditor5

CTRL+S保存该JS文件,出去刷新下自己的ckeditor,点击“链接”按钮后,你会发现“文件上传选项”中的浏览服务器按钮不见了。

最后弄掉上传FLASH中的浏览服务器按钮,打开ckeditor\plugins\flash\dialogs\flash.js文件,还是搜索"browseServer"第一次出现的地方,如上图位置处插入双引号内的内容",style:'display:none;'"。(这个和上面的几乎一样,就不截图了)。CTRL+S保存该JS文件,出去刷新下自己的ckeditor,点击“上传FLASH”按钮后,你会发现浏览服务器按钮不见了。

至此,一个从前端到后台,浏览服务器被全面禁用了的ckeditor诞生了!

Tags: Laravel5 6 CKEditor5

分享到: