[英]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.