解决方案:
您只需执行以下操作即可获取所有文件:
$allFiles = Input::file();
解释:
班上Input
实际上是一个 FacadeIlluminate\Http\Request
类(是的,就像Request
外观 - 它们都充当同一类的“面孔”!**)。
这意味着您可以使用 Request 中可用的任何方法。
如果我们搜索这个函数file(),我们看到它的工作原理是这样的:
public function file($key = null, $default = null)
{
return $this->retrieveItem('files', $key, $default);
}
Now, retrieveItem()
是一个受保护的方法,所以我们不能直接从控制器调用它。然而,更深入地观察,我们发现我们可以通过file()方法“空”为钥匙。如果我们这样做了,那么我们就会得到所有的物品!
protected function retrieveItem($source, $key, $default)
{
if (is_null($key))
{
return $this->$source->all();
}
else
{
return $this->$source->get($key, $default, true);
}
}
所以,如果我们调用Input::file()
,Request类将在内部运行$this->retrieveItem('files', null, null)
这将依次运行return $this->files->all();
我们将获得所有上传的文件。
** 注意Input
Facade有额外的方法get()可以在其中找到。