在 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 文件导入导出功能

在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能(转)

在laravel-excel中循环遍历数组中的数组

如何使用chunk方法使用Laravel excel进行文件上传?