0

我一直在关注 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 如何处理这个问题?

4

1 回答 1

2

Request 对象的目的是保存请求数据,而不是验证它。如果要进行验证,请创建一个对象(如果您将请求数据保存在某处,则创建一个实体,如果没有,则创建一个简单的 php 对象),将 的内容设置为$_FILES对象,例如:

$model->setFile($request->files->get('fileFormInputName'));

并使用验证器组件使用File 约束来验证文件。如果发送了附件,$request->files->get('fileFormInputName')则将是instanceof Symfony\Component\HttpFoundation\File\UploadedFile.

我希望这能回答你的问题。

于 2016-03-22T11:57:37.057 回答