Vichuploaderbundle: Ist es möglich, VichUploader zum Speichern einer hochgeladenen Datei in Action zu verwenden?

Erstellt am 21. Feb. 2013  ·  3Kommentare  ·  Quelle: dustin10/VichUploaderBundle

Ich weiß, dass dies nicht das Ziel von VichUploader ist, aber ich wünschte, es wäre möglich, denn VichUploader ist zu gut, um Dateifelder zu verarbeiten, und zwar nicht nur in der Datenbank, sondern auch in der Vorlage!

Die Situation ist, dass ich bereits eine Datei auf dem Server habe und ich wünsche, dass sie von VichUploader gespeichert und verschoben werden kann.

Mein Code in Aktion:

use Symfony\Component\HttpFoundation\File\File;
......
class documentController extends Controller {
......
        public function updateAction(Request $request){
                ......
                $form = $this->createForm(new DocumentType(), $doc);  
                ........
                if ($form->isValid()) {
                        $baseDir = $this->get('kernel')->getRootDir() . "/../web/uploads";  

                        $fileThumbnail = new File($baseDir."/image.jpg");  

                        $doc->setImgThumbnail($fileThumbnail->getFilename());

                        $sm = $this->get('vich_uploader.storage');
                        $sm->upload($doc);

                        $em->persist($doc);
                        $em->flush();
                        .......
                } //eof if
        }
}

Ich versuche, VichUploader zu verwenden, um eine hochgeladene Datei ohne Formularklasse zu speichern, aber es funktioniert nicht auf meine Art.

Ich möchte wissen, ob es möglich ist, eine hochgeladene Datei mit VichUploader und ohne Formular zu speichern?

Danke,

Hilfreichster Kommentar

Danke @Baachi und @ftassi ,

@Baachi du hast recht!
Dies kann mit der UploadedFile-Klasse erfolgen. Dies ist ein Hack, aber es ist einfach und effektiv.

die praktikable lösung ist

$fileThumbnail = new UploadedFile($baseDir.$filename, 'image.jpg', null, null, null, true);
$doc->setFileThumbnail($fileThumbnail);

$em->persist($doc);
$em->flush();

und alles ist perfekt.

Alle 3 Kommentare

Das wird nicht funktionieren (glaube ich). Um den Upload-Prozess auszulösen, sollten Sie eine UploadedFile an die Entität gebunden haben und stattdessen eine File-Instanz binden.

@ftassi Eine Lösung existiert.
Die Klasse UploadedFile hat einen Parameter test . Wenn dieser Parameter true , emuliert symfony einen Datei-Upload.

Danke @Baachi und @ftassi ,

@Baachi du hast recht!
Dies kann mit der UploadedFile-Klasse erfolgen. Dies ist ein Hack, aber es ist einfach und effektiv.

die praktikable lösung ist

$fileThumbnail = new UploadedFile($baseDir.$filename, 'image.jpg', null, null, null, true);
$doc->setFileThumbnail($fileThumbnail);

$em->persist($doc);
$em->flush();

und alles ist perfekt.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

benIT picture benIT  ·  3Kommentare

Chrysweel picture Chrysweel  ·  4Kommentare

vialcollet picture vialcollet  ·  5Kommentare

Marcelo-Petrucelli picture Marcelo-Petrucelli  ·  3Kommentare

ngilain picture ngilain  ·  5Kommentare