关于这个主题的文档相当稀少,除了他们的文档,我找不到其他任何东西(http://symfony.com/doc/current/cookbook/doctrine/file_uploads.html)关于如何在数据库中只保存相对路径并在Web服务器上具有实际映像。
/**
* @ORMColumn(name="photo", type="blob", nullable=true)
*/
private $photo;
您是否在实体中声明了这一点,并像使用常规变量那样生成getter/setter?如何从控制器中的POST请求中获取数据并调用模型函数以将BLOB保存到数据库中?
谢谢。
我从未尝试过,但来自条令文档:
从数据库中检索的值总是转换为PHP的资源类型,如果不存在数据则为null。
结合其他信息:
$stream = fopen($blobFromDcotrine,'rb');
stream_get_contents($stream);
我已经在我的模型中解决了这个问题,其中"file"是执行POST请求时给文件的名称,"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'));