使用laravel中的最大文件大小进行验证错误

时间:2018-07-26 09:57:30

标签: php laravel laravel-5.5

我在上传文件-excel文件时遇到问题。

我在laravel 5.5中使用此规则,最大文件大小为3MB。根据文档,该值必须以KB为单位。

// Max file size: 3MB (3000 KB)
$validator = Validator::make($request->all(), [
    'Feed' => 'file|max:3000',
]);
if ($validator->fails()) {
        return Redirect::back()->withErrors(['File to big!']);
    }

在php.ini中,我有:

upload_max_filesize=3M

我要上传的文件为2.3 MB。

我在验证中做错了什么?

UPDATE

显示我要上传的文件的$ _FILES ['Feed'](original.xls = 2.3MB)

array:5 [
 "name" => "original.xls"
 "type" => ""
 "tmp_name" => ""
 "error" => 1
 "size" => 0
]

“错误” => 1

并上传另一个5.6 KB小文件:

array:5 [
 "name" => "test.xls"
 "type" => "application/vnd.ms-excel"
 "tmp_name" => "/tmp/phpJUJfy4"
 "error" => 0
 "size" => 5632
]

“错误” => 0,我可以看到它的大小

更新2

如果我开始从excel文件中删除并获得最大大小:2MB,则文件上传没有错误。

为什么? 2.0 MB上传文件,而2.1 MB不上传???

2 个答案:

答案 0 :(得分:0)

问题出在php.ini

在我的服务器(ubuntu 18.04)上,我正在使用php 7.1并更改了

upload_max_filesize=3M

仅来自以下来源的apache2 / php.ini文件:

/etc/php/7.1/apache2/php.ini

当我在另一个(cli)中更改时,现在可以工作:

/etc/php/7.1/cli/php.ini

答案 1 :(得分:0)

当文件发送到服务器时,浏览器使用MIME编码将所有不可打印的字节转换为可打印的字符。这种编码会增加文件大小。

因此,当您发送2.3Mb文件时,其实际大小将超过3Mb。