Laravel 多重验证器错误错误信息

sai*_*can 5 php laravel laravel-4

问题:当上传的文件超过 5000kb 时,验证器返回 'required' 消息而不是 'max' 消息。为什么 ?

$file = (Input::file('inputName'));
$fileValidator = Validator::make(
   array('Field Name' => $file),
   array('Field Name' => 'required|max:5000|mimes:jpeg,png,bmp')
);

if($fileValidator->fails()){
   return $fileValidator->errors()->all(':message');
}
Run Code Online (Sandbox Code Playgroud)

更新:这个问题尤其发生在 *.psd 文件的验证上。


更新 2:当我 var_dump($file) 时,我可以看到;

object(Symfony\Component\HttpFoundation\File\UploadedFile)#9 (7) {
  ["test":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  bool(false)
  ["originalName":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  string(52) "4-47970_rsasecurityanalyticsevolutionofsiemebook.pdf"
  ["mimeType":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  string(24) "application/octet-stream"
  ["size":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  int(0)
  ["error":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  int(1)
  ["pathName":"SplFileInfo":private]=>
  string(0) ""
  ["fileName":"SplFileInfo":private]=>
  string(0) ""
}
Run Code Online (Sandbox Code Playgroud)

如您所见, pathName 和 fileName 看起来为空。所以这就是为什么 laravel 返回所需的消息。这是新问题:为什么 fileName 为 null ?

Ans*_*hra 4

当您上传的文件超过允许的大小(最大帖子大小和最大上传大小)时,php 不会将其发送到服务器,这就是为什么您的代码无法获取文件并通过 required 错误。

转到 php.ini 并增加最大上传和最大帖子大小的限制。这应该可以解决你的问题。

您还可以通过 php 设置这些:

ini_set('post_max_size', '64M');
ini_set('upload_max_filesize', '64M');
Run Code Online (Sandbox Code Playgroud)

或者您可以编辑 php.ini 文件:

post_max_size = 64M
upload_max_filesize = 64M
Run Code Online (Sandbox Code Playgroud)