繁体   English   中英

上载某些文件时出现令牌不匹配错误

[英]Token mismatch error when uploading some files

我实现了一个用于上传3个不同文件的表单。

这是一个:

<form method="POST" action="{{ route('register_update' , Auth::user()->id) }}" enctype="multipart/form-data">
    <input type="hidden" name="_token" value="{{{ csrf_token() }}}" />
    <div class="file-container">
       <input type="file" name="carte-id" id="id-file" class="input-file">
       <div class="fake-input-file">
         <div class="cross-container" id="cross-cont1">
           <i class="icon-plus-symbol" id="cross1"></i>
         </div>
         <div class="file-label" id="id-label">
           <label>Carte d'identité</label>
         </div>
       </div>
     </div>

这是我的控制器中的功能:

public function registerUpdate(CardAvsRequest $request){
        $id = Auth::user()->id;
        $first_name = User::find($id)->student->first_name;
        $last_name = User::find($id)->student->last_name;
        $name = $first_name . " " . $last_name;
        $message = "";
        if ($request->hasFile('carte-id'))
        {
            $image1 = $request->file('carte-id');
            if($image1->isValid())
            {
                if ($request->hasFile('avs'))
                {
                    $image2 = $request->file('avs');

                    if($image2->isValid())
                    {
                        if ($request->hasFile('permit'))
                        {
                            $image3 = $request->file('permit');

                            if($image3->isValid())
                            {
                                $path = config('card.path')."/$id";
                                $name = "carte-id.".$image1->getClientOriginalExtension();
                                $image1->move($path, $name);
                                $path = config('card.path')."/$id";
                                $name = "avs.".$image2->getClientOriginalExtension();
                                $image2->move($path, $name);
                                $path = config('card.path')."/$id";
                                $name = "permit.".$image3->getClientOriginalExtension();
                                $image3->move($path, $name);
                                $message = "Super ! Vous avez importé tous les fichiers nécessaires.";
                                //ici on dit dans la DB que l'utilisateur à uploadé tous les fichiers
                            }
                        }
                    }
                }
            }

        }
        return redirect()->route('account', $id)->with('message', $message);
    }

这是CardAvsRequest规则:

public function rules()
    {
        return [
            'carte-id' => 'mimes:jpg,png,pdf,gif,jpeg,tiff,doc,docx,odt|max:10000',
            'avs' => 'mimes:jpg,png,pdf,gif,jpeg,tiff,doc,docx,odt|max:10000',
            'permit' => 'mimes:jpg,png,pdf,gif,jpeg,tiff,doc,docx,odt|max:10000',
        ];
    }

但是每次我尝试上传一个应该产生验证错误的文件(例如视频文件或可执行文件)时,我都会遇到这个laravel错误:

TokenMismatchException in VerifyCsrfToken.php line 67

我只希望我的错误不显示幼虫。

有任何想法吗 ?

标记行应为

<input type="hidden" name="_token" value="{{ csrf_token() }}" />

只有两个大括号而不是三个

您可以替换为:

 <input type="hidden" name="_token" value="{{{ csrf_token() }}}" />

与:

{{ csrf_field() }}

这将为您生成所有html。 因此它将生成此示例。

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

请检查您的laravel安装路径与配置文件session.php设置的路径相同。另一种解决方案是在app\\http文件夹下的'App\\Http\\Middleware\\VerifyCsrfToken'注释'App\\Http\\Middleware\\VerifyCsrfToken' 。正确的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM