Laravel 中前端使用 Bootstrap-fileinput 上传文件,提示:CSRF token mismatch,很明显是 CSRF 校验错误,解决办法如下:
首先在表单内添加下面代码,这将使用 laravel 的 csrf_token() 函数在表单上添加一个 csrf 令牌字段
<input type="hidden" id="csrf_token" name="_token" value="{{ csrf_token() }}">
或者直接使用:
@scrf
注意:如果你没用到 Bootstrap-fileinput 仅仅是 Laravel 程序提示:CSRF token mismatch.那么,到此问题就解决了。
然后设置 bootstrap-fileinput 插件的 ajax 请求的额外 post 参数:uploadExtraData :
uploadExtraData:{'_token':$("#csrf_token").val()},
详细代码如下:
$("#input-id").fileinput({
maxFileSize: 264000,
uploadUrl: "{{url('/rate/uploadfile')}}",
uploadAsync: true,
uploadExtraData:{'_token':$('#csrf_token').val()},
allowedFileExtensions: ['mp3', 'mp4', 'mpeg', 'flv'],
maxFileCount: 1,
showUpload: true,
dropZoneEnabled: false
});