我一直在关注Fabien Potencier关于从Symfony Components构建自己的框架的文章。
$request = 'Symfony'Component'HttpFoundation'Request::createFromGlobals();
我认为 Request 对象可以用作 PHP 超全局变量的替代品。但是,如果我上传文件,并且遇到错误(即空文件上传),它不包含任何错误信息?
这是 $_FILES 数组的输出,它包含错误代码
Array
(
[inputIndex] => Array
(
[name] => Array
(
[3] =>
)
[type] => Array
(
[3] =>
)
[tmp_name] => Array
(
[3] =>
)
[error] => Array
(
[3] => 4
)
[size] => Array
(
[3] => 0
)
)
)
下面是$request对象的输出
Array
(
[inputIndex] => Array
(
[3] =>
)
)
在 $_FILES 的情况下,请求对象会丢失大量信息。它是否包含在请求对象中的其他任何位置?Symfony如何处理这个问题?
Request 对象的用途是保存请求数据,而不是验证它。如果要进行验证,请创建一个对象(如果将请求数据保存在某处,则为实体,如果没有,则仅创建一个简单的 php 对象),将$_FILES
的内容设置为该对象,例如:
$model->setFile($request->files->get('fileFormInputName'));
并使用验证程序组件通过 File 约束来验证文件。如果发送了附件,则将instanceof Symfony'Component'HttpFoundation'File'UploadedFile
$request->files->get('fileFormInputName')
。
我希望这能回答你的问题。