post 请求未保存 Vichuploader 文件

Vichuploader File is not saved with post request

我的项目实际上是创建一个允许我 post gif、jpg 等的网站。

我正在使用 VichuploaderBundler 上传文件并将其保存到我的应用程序中的特定存储库

#vich uploader Configuration
vich_uploader:
     db_driver: orm
     mappings:
        product_image:
            uri_prefix:         /images/posts
            upload_destination: '%kernel.root_dir%/../web/images/posts'
            namer:              vich_uploader.namer_uniqid
            inject_on_load:     false
            delete_on_update:   true
            delete_on_remove:   true

我正在创建一个 API 来创建和呈现资源。

我正在尝试通过 post 请求创建一个 Post 人 post。 在这个 Post 中,我想保存一个图像 throw vichuploader。(这在经典形式下有效)。

这是我的问题:

我的 post 是根据我的 post 人工请求创建的。但是我上传的文件没有保存在

                 /**
                 * @Rest\View(statusCode=Response::HTTP_CREATED)
                 * @Rest\Post("/posts")
                 */
                public function postPostsAction(Request $request)
                {
                    $post = new Post();
                    $post->setTitle($request->get('title'))
                        ->setDescription($request->get('description'))
                        ->setImageName($request->get('image_name'))
                        ->setImageFile($request->get('imageFile'))

                        // It is required that at least one field changes if you are using doctrine
                        // otherwise the event listeners won't be called and the file is lost
                        ->setUpdatedAt(new \DateTime());


                    $em = $this->get('doctrine.orm.entity_manager');
                    $em->persist($post);
                    $em->flush();

                    return $post;
                }

感谢您对我的 post 的帮助和反馈。

我找到了解决这个问题的方法,实际上非常简单!

public function postPostsAction(Request $request)
{
    $post = new Post();
    $post->setTitle($request->get('title'))
        ->setDescription($request->get('description'))
        ->setImageName($request->get('image_name'))
        ->setImageFile($request->files->get('imageFile'))
        // It is required that at least one field changes if you are using doctrine
        // otherwise the event listeners won't be called and the file is lost
        ->setUpdatedAt(new \DateTime());


    // On fait appel à doctrine pour seter un id lors de la création en base
    $em = $this->get('doctrine.orm.entity_manager');
    $em->persist($post);
    $em->flush();

    return $post;
}

多亏了 ->files 语句,我的照片才保存在正确的目录中