上一篇已经说过如何让ckeditor能上传图片。
这篇讲下如何使用ckfiner来做文件浏览及管理。
1,下载finder。解压到/public。
我的目录是这样: /public/finder/3.3.0/ ........
2,修改页面文件,加载ckfinder 。
引入js
<script type="text/javascript" src="{{asset('/ckeditor/4.5.7/ckeditor.js')}}"></script>
<script type="text/javascript" src="{{asset('/ckfinder/3.3.0/ckfinder.js')}}"></script>
var content = CKEDITOR.replace( 'content',
{
language: 'zh-cn',
height: 450,
filebrowserBrowseUrl : '/ckfinder/3.3.0/ckfinder.html',
filebrowserImageBrowseUrl : '/ckfinder/3.3.0/ckfinder.html?type=Images',
filebrowserFlashBrowseUrl : '/ckfinder/3.3.0/ckfinder.html?type=Flash',
filebrowserImageUploadUrl : '{{url('admin/images')}}?_token={{csrf_token()}}',
});
CKFinder.setupCKEditor( content );
这里要注意下三个BrowerUrl的地址。只要这样写,ckfinder就已经可以工作了。并且在ckeditor里,已经打开“浏览服务器”的按钮。
最后一个UploadUrl跟上一篇的上传相同。
这一句
CKFinder.setupCKEditor( content );
不写也能工作,但是文档上说要写就写吧。可能要用到高级功能就会知道不写的后果了。
3,修改ckfinder 下的config.php文件。
这里只要把
$config['authentication'] = function () { return false; };这里的false改成true就行了。
文档里说只是简单的改成true会有安全上的问题。
那么,还需要在文件头上加上laravel的一些东西,让它能够认证下。比如登录用户才能访问等等。
代码如下:
require __DIR__.'/../../../bootstrap/autoload.php'; $app = require_once __DIR__.'/../../../bootstrap/app.php'; $app->make('Illuminate\Contracts\Http\Kernel')->handle(Illuminate\Http\Request::capture()); function CheckAuthentication(){ return Auth::check(); }
加入以上代码之后,把return true 改成 return CheckAuthentication();
这样的话经过认证之后会安全一些。
这里有个问题。虽然文件浏览不会有问题。可是在ckfinder里就无法上传文件了。因为在某一个环节上,这里的认证并没有起作用,它没有返回true。
目前没时间调试这个问题,先直接返回true吧。所以这里laravel的内容可以不加。
4,上传文件 的保存目录。
'baseUrl' => '/upload/userfiles/',ckfinder中上传的文件会被保存到 /publid/upload/userfiles/images/ 当中。
这里的images是ckfinder自己加的。 应该可以去掉,我懒就由着它去吧。
这里的上传目录,和单独的上传功能的目录,可以根据项目 需要设在一起,或是不设在一起。
问题:
1,在ckeditor的单独上传功能中,没有办法使用
filebrowserFlashUploadUrl : '/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash'
这样的地址。会提示404错误。因为路由里没有嘛。
这个问题网上没找着答案。高手都不屑于告诉我这个问题如何解决。
这个问题已经解决,是我地址写错了。
正确,完整的是这样:
var content = CKEDITOR.replace( 'content', { language: 'zh-cn', height: 450, filebrowserBrowseUrl : '/ckfinder/3.3.0/ckfinder.html', filebrowserImageBrowseUrl : '/ckfinder/3.3.0/ckfinder.html?type=Images', filebrowserFlashBrowseUrl : '/ckfinder/3.3.0/ckfinder.html?type=Flash', filebrowserUploadUrl : '/ckfinder/3.3.0/core/connector/php/connector.php?command=QuickUpload&type=Files', filebrowserImageUploadUrl : '/ckfinder/3.3.0/core/connector/php/connector.php?command=QuickUpload&type=Images', filebrowserFlashUploadUrl : '/ckfinder/3.3.0/core/connector/php/connector.php?command=QuickUpload&type=Flash' }); CKFinder.setupCKEditor( content );一行php代码都不用写,除了那个验证的要研究下。
==========================================================================================
修改一下:配置完ckfinder的“浏览服务器”,可以把上传文件的UploadUrl这段删了。因为这时已经配置好文件上传了。都不需要自己单独去写上传。
只不过,它用的是files的上传,即保存到“files”目录。而不是“images”目录。
filebrowserImageUploadUrl : '{{url('admin/images')}}?_token={{csrf_token()}}',这个删掉!!!