Vichuploaderbundle: Est-il possible d'utiliser VichUploader pour enregistrer un fichier téléchargé dans Action ?

Créé le 21 févr. 2013  ·  3Commentaires  ·  Source: dustin10/VichUploaderBundle

Je sais que ce n'est pas le but de VichUploader, mais j'aimerais que ce soit vrai, car VichUploader est trop beau pour traiter le champ de fichier et pas seulement dans la base de données, mais aussi dans le modèle !

la situation est que j'ai déjà un fichier sur le serveur et je souhaite qu'il puisse être enregistré et déplacé par VichUploader.

Mon code en action :

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
        }
}

J'essaie d'utiliser VichUploader pour enregistrer un fichier téléchargé sans classe de formulaire, mais cela ne fonctionne pas à ma façon.

Je veux savoir s'il est possible d'enregistrer un fichier téléchargé avec VichUploader et sans formulaire ?

Merci,

Commentaire le plus utile

Merci @Baachi et @ftassi ,

@Baachi tu as raison !
Cela peut être fait avec la classe UploadedFile. c'est un hack, mais c'est simple et efficace.

la solution réalisable est

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

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

et tout est parfait.

Tous les 3 commentaires

Cela ne fonctionnera pas (je suppose). Afin de déclencher le processus de téléchargement, vous devez avoir un UploadedFile lié à l'entité et vous liez une instance de fichier à la place.

@ftassi Une solution existe.
La classe UploadedFile a un paramètre test . Si ce paramètre true , symfony émulera un téléchargement de fichier.

Merci @Baachi et @ftassi ,

@Baachi tu as raison !
Cela peut être fait avec la classe UploadedFile. c'est un hack, mais c'est simple et efficace.

la solution réalisable est

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

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

et tout est parfait.

Cette page vous a été utile?
0 / 5 - 0 notes