MVC Symfony2将图像保存为数据库中的blob

时间:2016-04-19 12:38:12

标签: php symfony doctrine-orm

关于这个主题的文档非常缺乏,除了他们的文档(http://symfony.com/doc/current/cookbook/doctrine/file_uploads.html)之外,我找不到关于如何只保存数据库中的相对路径并在Web服务器上拥有实际图像的内容。 / p>

/**
 * @ORM\Column(name="photo", type="blob", nullable=true)
 */
private $photo;

你是否在你的实体中声明并生成像常规变量那样的getter / setter?如何从控制器中的POST请求中获取数据并调用模型函数以将BLOB保存到数据库?

感谢。

2 个答案:

答案 0 :(得分:0)

我从未尝试过doctrine documentation

  

从数据库中检索的值始终转换为PHP   资源类型,如果没有数据则为null。

结合找到there的其他信息:

$stream = fopen($blobFromDcotrine,'rb');
stream_get_contents($stream);

答案 1 :(得分:0)

我已经在我的模型中解决了这个问题,其中' file'是执行POST请求时为文件指定的名称,&t; tmp_name'是PHP提供给您的文件的临时文件路径:

$content = file_get_contents($_FILES['file']['tmp_name']);
$user->setUserPhoto($content);
$this->em->persist($user);
$this->em->flush();

然后在控制器中返回响应:

return new Response(stream_get_contents($users->getUserPhoto($user)), Response::HTTP_OK, array(
        'Content-Type' => 'application/octet-stream'));