2016-04-19 13 views
0

この件に関する文書はむしろ稀で、データベースの相対パスのみを保存し、実際の画像をどのように保存するのかに関するドキュメント(http://symfony.com/doc/current/cookbook/doctrine/file_uploads.html)以外は何も見つかりません。ウェブサーバーMVC Symfony2データベースにBLOB形式で画像を保存

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

通常の変数のようにエンティティで宣言してゲッター/セッターを生成しますか?あなたのコントローラ内のPOSTリクエストからデータを取得し、BLOBをデータベースに保存するためにモデル関数を呼び出すにはどうすればよいですか?

ありがとうございました。

+0

あなたがやっていることに役立つv3.1の新機能があります:[Symfony 3.1の新機能:データURI正規化](https://symfony.com/blog/new-in-symfony-3 -1-data-uri-normalizer) – Yoshi

答えて

0

私は「ファイル」のPOSTリクエストを実行するときに、ファイルに付ける名前で私のモデルでこれを行うことによってそれを解決し、かついます

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

そして、あなたが応答を返すコントローラで:「tmp_nameは」PHPで、あなたのファイルに指定した一時ファイルのパスです

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

私が試していないが、doctrine documentationから決して:データが存在しない場合は、データベースから取得し

値は常にPHPの リソースタイプまたはnullに変換されます。その他の情報に合わせて

thereが見つかりました:

$stream = fopen($blobFromDcotrine,'rb'); 
stream_get_contents($stream); 
関連する問題