我正在使用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搜索时,我发现禁用它是一种不好的做法。如何停止收到此错误并上传文件?
答案 0 :(得分:4)
好的,所以我终于搞定了。 我发送带有请求的csrf令牌。
filebrowserImageUploadUrl : "{{route('infos.upload',['_token' => csrf_token() ])}}",
答案 1 :(得分:0)
使用以下代码修复了Csrf问题:
<script type="text/javascript">
CKEDITOR.replace('editor1',{
filebrowserImageUploadUrl : "{{ url('your_url?_token='.csrf_token()) }}",
});
</script>