尝试使用Silex / Symfony2从请求中检索文件

时间:2015-01-12 16:12:27

标签: symfony silex bolt-cms

我正在使用以下内容检索POSTed文件:

$this->app->post(Extension::API_PREFIX . "profile/picture", array($this, 'post_profile_pic'))
      ->bind('post_profile_pic');

public function post_profile_pic(Request $request) {
    $response = $this->app->json(array(
        'file' => $request
    ));
    return $response;
}

我使用Postman上传文件(请参阅screenshot),但请求为空:

{
    "file": {
        "attributes": { },
        "request": { },
        "query": { },
        "server": { },
        "files": { },
        "cookies": { },
        "headers": { }
    }
}

然而它显然知道那里应该有一个文件。那我该如何访问该文件呢?

1 个答案:

答案 0 :(得分:3)

PHP上传的文件不是用$ _POST发送的,而是在一个名为$ _FILES(http://php.net/manual/en/features.file-upload.post-method.php)的单独变量中发送 - 所以在你的情况下你应该看看

$this->app->files

如果您使用symfony中的默认表单组件,则文档位于http://symfony.com/doc/current/reference/forms/types/file.html#basic-usage

在simpleforms模块中,文件由

后面的行检索
$files = $this->app['request']->files->get($form->getName());

使用Bolt,Silex和Symfony组件提供的基本结构。 (另见https://github.com/jadwigo/SimpleForms/blob/master/Extension.php#L505