【发布时间】:2016-03-14 15:36:00
【问题描述】:
我无法在 Laravel 5 中上传 excel 文件。
我有以下错误:
VerifyCsrfToken.php 行中的 TokenMismatchException
查看
<form action="{{url('raports/upload')}}" method="post" enctype="multipart/form-data">
<input name="_token" type="hidden" value="{!! csrf_token() !!}" />
<input type="file" name="plik" >
<input type="submit" class="btn btn-primary" value="Upload File"/>
</form>
控制器
public function postUpload()
{
$validator = Validator::make(Request::all() , ['plik' => 'required']);
if ($validator->fails()) {
return redirect('raports/upload')
->withErrors($validator)
->withInput();
}
else
{
$file = Request::file('plik');
dd($file->getClientOriginalName());
}
}
当我尝试上传 txt 文件时,一切正常,但不是 excel 文件。
有什么想法吗?
可能是nginx的问题:
2015/12/09 19:30:32 [错误] 24145#0: *1233663 FastCGI 在标准错误中发送: “PHP 消息:PHP 警告:REQUEST_BODY_FILE: 打开('/var/lib/nginx/body/0000007523')失败:没有这样的文件或 目录 (2) 在 Unknown on line 0" 中读取响应标头 上游,客户端:91.226.23.2,服务器:domain.com,请求:“POST /raports/upload HTTP/1.1",上游: "fastcgi://unix:/var/run/php5-fpm.sock:"
【问题讨论】:
-
你确定这是你的错误吗?您可以禁用 crsf 令牌中间件并重试吗?因为我认为这个错误与你无关,因为你说你可以上传 txt 文件。
-
确保您没有测试 txt 上传,然后单击返回并测试 xls(x) 上传。单击返回不会获得新的 CSRF 令牌。如果您单击返回以使用另一个文件进行测试,请刷新上传页面,然后重试。