上传视频时,VerifyCsrfToken.php第67行中的TokenMismatchException

时间:2016-04-18 18:07:13

标签: php laravel

Picture 1 uploadscontroller

Picture 2 Form

Picture 3 Form

您好,

尝试使用Laravel 5.2上传视频时,我收到了标题中提到的错误。

图片正常工作。

我已经检查了我的MAMP服务器的PHP.ini设置。

我使用表单外观,所以我不必将令牌导入到我的表单中。

我很无能为力,是否有人建议它可能是什么?

<div class="container spark-screen">
    <div class="row">
        <div class="col-md-10 col-md-offset-1">
            <div class="panel panel-default">
                <div class="panel-heading">Bestand uploaden</div>

                <div class="panel-body">
                    {!! Form::open(
                        array(
                            'url' => 'uploads',
                            'class' => 'form',
                            'novalidate' => 'novalidate',
                            'files' => true)) !!}

                        @include('uploadspanel.create_form')

                    {!! Form::close() !!}
                </div>
            </div>
        </div>
    </div>
</div>

控制器:

public function store(UploadRequest $request){
    $extension = Input::file('file')->getClientOriginalExtension();
    $filename = rand(11111111, 99999999). '.' . $extension;
    Input::file('file')->move(
      base_path().'/public/files/uploads/', $filename
    );
    $approved = $request['approved'];
    $fullPath = '/public/files/uploads/' . $filename;
    $upload = new Uploads(array(
        'name' => $request['name'],
        'format' => $extension,
        'path' => $fullPath,
        'approved' => $approved,
    ));
    $upload->save();
    $uploads = Uploads::orderBy('approved')->get();
    return view('uploadspanel.index', compact('uploads'));
}

3 个答案:

答案 0 :(得分:0)

确保您的表单中包含令牌,转到您的页面并进行检查,您应该会看到以下内容:

<input name="_token" type="hidden" value="Th4yqxNa3w3ooVAxRcSgvMug7ZEPA6BtaUw4qRck">

如果您不这样做,请将其添加到您的刀片中:

{{ Form::hidden("_token", csrf_token()) }}

您可能遇到的另一个问题是,如果您通过AJAX请求提交此表单,那么您也需要在其中传递令牌:

$.ajax({
    url  : '{{ route("your_route", optional_parameter) }}',
    type : "post",
    data : { '_token' : '{{ csrf_token() }}', 'var1' : var1 },
}).done(...)

答案 1 :(得分:0)

它与MAMP设置有关。当我回复php_info();

时想出来

然后在第6行或第7行跟随我的php.ini路径 然后用另一个编辑器再次更改输入,保存它。

retart MAMP服务器

并完成了

答案 2 :(得分:0)

当您上传的文件小于最大上传大小但超过POST_MAX_SIZE时,会发生这种情况。 输入在POST_MAX_SIZE处被截断,这意味着csrf令牌丢失。

您可以在php.ini文件中更改这些值。