Upload de fichier avec Symfony


thomas
Upload de fichier avec Symfony

Un petit post pour expliquer l’upload de fichier via symfony 1.2 et surtout la gestion du nom du fichier uploadé.

(suite…)

Show Comments (9)

Comments

  • Olivier

    Bonjour,

    C’est enfin une source sur une partie obscure de symfony.
    Seriez vous comment fait-on pour faire la même chose dans l’admin générator qui génère un nom de fichier en MD5.

    Cordialement Olivier

    • Article Author
  • thomas

    Bonjour,

    en principe le fait d’écrire la fonction generateImageFilename va surcharger la fonction par défaut (le fameux md5 ). Donc vu que c’est écrit sur l’objet ca doit marcher aussi bien dans le front que dans l’admin.

    • Article Author
  • Olivier

    Bonjour,

    trop heureux d’avoir une réponse, j’ai essayé mais cela ne fonctionne pas. Par contre, je vais regarder si je n’ai pas mal fait les choses car je n’ai pas implémenter la partie validator que vous précisez. si cela fonctionne , je reviendrais le dire.

    cordialement olivier

    • Article Author
  • damien

    Cela ne fonctionne pas pour moi:

    Fatal error: Class ‘Sanitize’ not found in C:\www\symf\test\lib\model\Photo.php on line 13

    Y’a t’il un autre moyen?

    • Article Author
  • damien

    C\\\’est bon, j\\\’ai trouvé, ma fonction ressemble à cela maintenant:

    public function generateDescriptionFilename(sfValidatedFile $file)
    {
    return $file->getOriginalName();
    }
    }

    Cordialement, Damien

    • Article Author
  • thomas

    Bonjour,

    dans ma function generateImageFilename(sfValidatedFile $file) je fais appel à la méthode stripText() de l’objet Sanitize :
    Sanitize::stripText($text)
    Or cette fonction n’est pas par défaut dans symfony, elle permet simplement de faire un slugify.
    Symfony à sa propre fonction que l’on peut appeler de la sorte :
    Doctrine_Inflector::urlize($text)

    • Article Author
  • Renaud

    Bonjour,

    En suivant pas à pas le tutoriel Jobeet je n\’ai pas eut trop de soucis avec l\’upload en lui-même. Cependant j\’aimerai moi aussi que mon nom de fichier soit composé de certaines informations provenant de ma table ($this->name dans l\’exemple). Mais si je change le \’name\’ et le fichier en même temps lors d\’une édition le nom du nouveau fichier n\’est pas généré avec la nouvelle valeur de \’name\’ … et je ne parle pas de la création. Y a-t-il un moyen avec Symfony de gérer tout cela en piochant dans les informations saisies dans le formulaire ? Ou est-ce que je dois surcharger ma méthode save en y mettant un rename du fichier (un peu barbare à mon goût alors qu\’il y a tant d\’outils à disposition) ?

    • Article Author
  • thomas

    Bonjour,

    Le probleme c’est que lorsque l’on sauvegarde le formulaire, il upload les fichiers et n’a pas accès aux nouvelles données.
    Pour y remédier on peut lui faire passer la donnée voulue juste avant de faire la sauvegarde:
    $form->bind($request->getParameter($form->getName());
    if($form->isValid())
    {
    $form->getObject()->setName($form->getValue(‘name’));
    $form->save();
    }
    Donc avec cette phrase:
    $form->getObject()->setName($form->getValue(‘name’));
    on renseigne la valeur name de notre objet.
    et logiquement dans le
    generateDescriptionFilename($file){}
    on a maintenant accès à $this->getName();

    • Article Author
  • Tadpole

    Un grand MERCI !

    C\’est grâce a des gens comme vous que l\’on avance à grands pas 🙂

    bonne continuation

    • Article Author

Recevez nos articles