我在上传文件-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不上传???
答案 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。