Laravel 验证器/上传的文件在要求时失败
Posted
技术标签:
【中文标题】Laravel 验证器/上传的文件在要求时失败【英文标题】:Laravel Validator / Uploaded File Fails At Required 【发布时间】:2013-06-28 20:41:38 【问题描述】:"dd" 输出 Input::all() 在 postController:
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 输出中看到的那样,它始终显示该错误。
谢谢,
【问题讨论】:
您是否在打开的表单中添加了文件选项? 是的,enctype=multipart/form-data。 哦,问题是使用 Input::except() 而不是 all()。我认为它不包含文件,只是输入。解决了。谢谢。 :) 【参考方案1】:user2413500 发现问题在于使用不包含文件对象的Input::except('_token')
。但是,Input::all()
确实包含文件对象。这似乎是我要报告的错误,但 Input::except 的定义是“全部”减去您不想要的项目。
但似乎正在发生的是“全部”减去你不想要的项目,减去你的文件!
Itrulia 和 Taylor 说this is not a bug。
但是,当您发布了 $_FILE 时,这些声明令人困惑地并不完全相同...
$params = Input::except('_token'); // Missing file inputs!
$params = array_except(Input::all(), '_token'); // The current solution.
保持警惕! :)
【讨论】:
以上是关于Laravel 验证器/上传的文件在要求时失败的主要内容,如果未能解决你的问题,请参考以下文章