Laravel Validator / Uploaded File在需要时失败

时间:2013-07-01 16:31:18

标签: validation file-upload laravel

在postController中

“dd”输出输入:: all()

array(8) {
["_token"]=>
string(40) "6WZ87M1LCiVCsaUS9HbjZckRibXfF2RP69LCpW7K",
...
...
["svg"]=>
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(39) "Screenshot from 2013-06-18 17:07:27.png"
  ["mimeType":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  string(9) "image/png"
  ["size":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  int(29747)
  ["error":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  int(0)
  ["pathName":"SplFileInfo":private]=>
  string(14) "/tmp/phpdRTDU7"
  ["fileName":"SplFileInfo":private]=>
  string(9) "phpdRTDU7"
}
}

验证:

$rules = array('svg' => 'required');

$check = Validator::make(Input::except('_token'), $rules);

if($check->fails()){
return Redirect::back()->withErrors($check);    
}else{
return Redirect::back()->with('message', 'No problem'); 
}

我收到错误消息:

错误讯息: svg字段是必需的。

即使我按照你在dd输出上看到的那样上传文件,它也始终显示错误。

谢谢,

1 个答案:

答案 0 :(得分:4)

user2413500发现问题是使用了不包含文件对象的Input::except('_token')。但是,Input::all()确实包含文件对象。这似乎是我将报告的错误,但是Input :: except的定义是“all”减去你不想要的项目。

但似乎正在发生的事情是“全部”减去你不想要的项目,减去你的文件!

Itrulia和Taylor说this is not a bug

但是,当您发布$ _FILE时,这些容易混淆不完全相同的语句......

$params = Input::except('_token'); // Missing file inputs!
$params = array_except(Input::all(), '_token'); // The current solution.

要警惕! :)