在开发程序时候,遇到了Laravel框架报错TokenMismatchException的错误,经过调查原因和处理方法如下:
错误原因:
1、Laravel框架开启了CSRF防御,但是POST提交过去的字段中没有生成_token。
2、如果你提交的字段中带有了_token,(建议直接在模板通过函数csrf_field去生成),还出现这个错误,那可能就是你POST过去的数据,超过了PHP配置中的值,即使你upload_max_filesize 的值是比你POST的文件要大,如果post_max_size小了,POST内容依然会读取不到,而且会影响其他的field。
总共需要在ini配置两个参数:post_max_size,upload_max_filesize ,
这两个大小最好设置post比upload的大即可,
比方说upload_max_filesize 大小限制150M,post_max_size大小就设置个151M。
<form class="form-inline" action="{{ route('voyager.'.$dataType->slug.'.import.excel') }}" method="POST" enctype="multipart/form-data">
{{ csrf_field() }}
<div class="form-group">
<label for="exampleInputFile">Excel报表:</label>
<input class="form-control" name="file" type="file" id="exampleInputFile">
</div>
<div class="form-group">
<label for="example"></label>
<input class="form-control btn-primary" type="submit" id="example" value="导入Excel">
</div>
</form>