在 laravel 中使用最大文件大小的验证错误
Posted
技术标签:
【中文标题】在 laravel 中使用最大文件大小的验证错误【英文标题】:validation error using max file size in laravel 【发布时间】:2019-01-03 06:55:13 【问题描述】:我在上传文件 - 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。
我在验证时做错了什么?
更新
显示我要上传的文件的 $_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
]
"error" => 0 我可以看到它的大小
更新 2
如果我开始从 excel 文件中删除并获得最大:2MB,则文件上传没有错误。
为什么? 2.0 MB 上传文件,2.1 MB 不上传文件???
【问题讨论】:
你有没有发现任何错误? 是....我返回的错误:“文件变大!” 你试过只用 'Feed' => 'max:3000', 检查验证器本身返回的错误。 @OluwatobiSamuelOmisakin 验证器本身:“Feed 上传失败。”并仅尝试使用 max:3000 和相同的错误 【参考方案1】:问题出在 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
【讨论】:
【参考方案2】:当文件发送到服务器时,浏览器使用 MIME 编码将所有不可打印的字节转换为可打印的字符。这种编码会增加文件大小。
因此,当您发送 2.3Mb 文件时,其实际大小会超过 3Mb。
【讨论】:
以上是关于在 laravel 中使用最大文件大小的验证错误的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 8.38 验证问题,最大文件大小。 RuntimeException:无法打开文件 public path。在第 46 行的文件 Psr17Factory.php 中