在 Laravel 5 中上传 excel 文件
Posted
技术标签:
【中文标题】在 Laravel 5 中上传 excel 文件【英文标题】:Upload excel file in Laravel 5 【发布时间】:2016-03-14 15:36:00 【问题描述】:我无法。
我有以下错误:
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 令牌。如果您单击返回以使用另一个文件进行测试,请刷新上传页面,然后重试。 【参考方案1】:根据给定的文档。试试这个。
当 Via Facade 时,它通过
Request::file('filename');
当通过控制器时,像这样改变你的上传功能。
public function postUpload(Request $request)
$file = $request->file('filename');
echo dd($file);
不知道是不是这个问题,如果还是不行,你可以去你的Directory/public查看是否已经上传到public文件夹。如果是这样,你能告诉我抛出的错误吗?如果不是,那么问题出在请求上。
【讨论】:
OP 已经使用Request::file('plik');
,plik
是从表单传递的文件输入名称...
不管是“plik”还是其他东西,我只是想知道它是否解决了他的问题。先让他检查一下文件是否上传成功。【参考方案2】:
当您尝试提交超出服务器 php.ini 中设置的**post_max_size**
的文件时,会发生此错误。
将**post_max_size**
的大小增加到 100000 之类的值并尝试一下。
【讨论】:
在建议一个荒谬的数字之前 - 最好建议一个更合理的限制,然后解释它是什么。我永远不会允许超过 10Mb 的上传。 伙计,这只是一个例子.. 完全由他来决定数字。以上是关于在 Laravel 5 中上传 excel 文件的主要内容,如果未能解决你的问题,请参考以下文章
从 excel 文件 Laravel 5 更快地将记录插入数据库
使用 Laravel 5.0 存储门面将元数据、标头(Expires、CacheControl)添加到上传到 Amazon S3 的文件中
在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能