2015-09-27 107 views
0

我正在使用ckeditor,我試圖上傳文件。 這是我的代碼:使用CKeditor上傳文件

@extends('app') 
@section('header') 
<script type="text/javascript" src="{{url('ckeditor/ckeditor.js')}}"></script> 
@endsection 
@section('content') 
<div class="container"> 

    @include('common.errors') 
<div class="row"> 
       <div class="col-lg-12"> 

          <div class="row"> 
           <div class="col-lg-9"> 
    {!! Form::model($info, ['route' => ['infos.update', $info->id], 'method' => 'patch','files' => true]) !!} 

     @include('infos.fields') 

    {!! Form::close() !!} 
    </div> 
    </div> 
    </div> 
    </div> 
</div> 
@endsection 
@section('footer') 
<script type="text/javascript"> 
    CKEDITOR.replace('editor1',{ 

     filebrowserImageUploadUrl : "{{route('infos.upload')}}", 
     filebrowserWindowWidth : 800, 
     filebrowserWindowHeight : 500 
    }); 
    window.opener.CKEDITOR.tools.callFunction(CKEditorFuncNum,url); 
</script> 
@endsection 

每當我試着上傳文件,我得到令牌不匹配錯誤。表單生成器會自動在主窗體中添加一個隱藏的csrf字段,但由於ckeditor發出的文件上傳(POST請求)是通過ajax發生的,所以它給了我這個錯誤。我知道我可以禁用這個錯誤,但是當我使用Google時發現禁用它是一種不好的做法。如何停止獲取此錯誤並上傳文件?

回答

2

好吧,所以我終於搞定了。 我發送帶請求的csrf標記。

filebrowserImageUploadUrl : "{{route('infos.upload',['_token' => csrf_token() ])}}", 
0

修正了CSRF問題與下面的代碼:

<script type="text/javascript"> 
CKEDITOR.replace('editor1',{ 

    filebrowserImageUploadUrl : "{{ url('your_url?_token='.csrf_token()) }}", 

}); 
</script> 
+1

您應該添加一些文字來備份和解釋,而不是它只是作爲一個代碼塊你的答案。 – Minzkraut

+0

你能解釋一下你的代碼在做什麼來解決這個問題嗎? – Mike