2016-04-19 9 views
0

Dokumentation zu diesem Thema ist eher selten, und ich kann nichts anderes finden als ihre Dokumentation (http://symfony.com/doc/current/cookbook/doctrine/file_uploads.html) zum Speichern nur der relativen Pfad in der Datenbank und haben das eigentliche Bild auf der Webserver.MVC Symfony2 Bild als Blob in Datenbank speichern

Deklarieren Sie das in Ihrer Entität und generieren Sie Getter/Setter wie bei einer normalen Variablen? Wie erhalten Sie die Daten von der POST-Anfrage in Ihrem Controller und rufen Sie die Modellfunktion auf, um das BLOB in der Datenbank zu speichern?

Danke.

+0

Es gibt eine neue Funktion in v3.1, die Ihnen dabei helfen würde: [Neu in Symfony 3.1: Daten-URI-Normalizer] (https://symfony.com/blog/new-in-symfony-3 -1-Daten-Uri-Normalizer) – Yoshi

Antwort

0

ich es, indem Sie diese in meinem Modell gelöst haben, wo ‚Datei‘ ist der Name, den Sie in der Datei geben, wenn die POST-Anforderung ausgeführt wird, und ‚tmp_name‘ ist die temporäre Datei Pfad zur Datei, die von PHP gegeben:

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

Und dann in der Steuerung Sie eine Antwort zurück:

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

ich nie versucht, aber von doctrine documentation:

Werte aus der Datenbank abgerufen werden immer konvertiert PHP Ressourcentyp oder null, wenn keine Daten vorhanden sind.

In Kombination mit anderen Informationen gefunden there:

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