IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

[Symfony 2] Upload Fichier différents chemins de destinations [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 116
    Points : 66
    Points
    66
    Par défaut [Symfony 2] Upload Fichier différents chemins de destinations
    Bonjour,

    J'ai suivi un tuto sur Symfony ... J'ai deux entity Article et Image. Image est une relation OneToOne dans Article. Dans l'entité image on donne la destination de l'upload. Je me pose une question sur le chemin del'upload de fichiers, winzou met les fichiers dans uploads/img.

    Ma question est sur l'organisation des uploads. Par exemple si on a les articles et les user on peut avoir un upload d'image pour chacun d'entre eux. Je souhaiterais pouvoir mettre les images à des endroits différents par exemple uploads/img/articles et uploads/img/user. Sans faire une redondance de tables dans la base de données et de code de l'entité image en ne modifiant que le chemin de destinations, est-ce qu'il n'y aurais pas une possibilité de mettre un chemin paramétrable en fonction de l'entité de départ (Article ou User).

    J'espère avoir était assez claire. Merci par avance de votre réponse.

  2. #2
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    c'est dans le preUpload de ton entity que tu peux définir/ajouter par exemple l'id de l'user comme dossier ($this->path)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 116
    Points : 66
    Points
    66
    Par défaut
    Bonjour,

    merci de ta réponse. Mais cela ne répond pas totalement à ce que je désire faire.
    Pour une image lors de l'inscription de l'utilisateur (un avatar par exemple) je voudrais le mettre dans uploads/img/user avec user écrit de cette manière et non comme ID. Après je pourrais utiliser ta technique pour ajouter un niveau supplémentaire dans l'arborescence pour avoir uploads/img/user/id. Idem pour article je voudrais mettre les images dans uploads/img/articles et avec ta technique je pourrais les mettre dans uploads/img/articles/id. Mon problème est de donner la bonne partie du début de l'arborescence qui est défini comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    protected function getUploadDir()
        {
     
            return 'uploads/img';
        }
    Il faut que j'arrive a définir quand est-ce que je suis une image de l'entity User et quand est-ce que je suis une image de l'entity Article pour que le chemin soit différent.
    Pour avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     return 'uploads/img/user';
    dans un cas et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return 'uploads/img/articles';
    dans l'autre cas. Mais je ne vois pas comment m'en sortir.

    J'espère avoir était plus clair. Merci par avance de vos réponse.

  4. #4
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    suivant le contexte, dans le controlleur :

    pour le formulaire du profil :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                    $img->setChemin('uploads/xxx_profil_xxx/'.$user->getId());                                           
                    $form = $this->createForm(new ImgType(), $img);
    pour le formulaire de l'article:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                    $img->setChemin('uploads/xxx_article_xxx/'.$user->getId());                                           
                    $form = $this->createForm(new ImgType(), $img);


    tu rajoute la propriété chemin dans l'entité img (pas besoin de rajouter une colonne chemin dans ta table Img car on s'en foue qu'il soit enregistré en base)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
       class Img... {
         private chemin ;
     
        public function preUpload()   {
            if (null !== $this->file) {
                // faites ce que vous voulez pour générer un nom unique
                $this->path = $this->getChemin().'/'.sha1(uniqid(mt_rand(), true)).'-'.$this->file->getClientOriginalName();
                $this->setName($this->file->getClientOriginalName());
                //sha1(uniqid(mt_rand(), true)).'.'.$this->file->guessExtension();
            }
        }  
       ....
      getter et setter de chemin
    donc $this->getChemin() va contenir soit ('uploads/xxx_profil_xxx/'.$user->getId()) soit ('uploads/xxx_article_xxx/'.$user->getId())

    il faut adapter tous ces morceaux de code bien sur

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 116
    Points : 66
    Points
    66
    Par défaut
    Merci beaucoup pour ta réponse, il faut que je teste mais dans l'idée c'est ce qu'il me manquait donc je pense que ta solution fonctionne.
    Si j'ai un problème je reviendrais par là.

    Encore merci de ta réponse.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 116
    Points : 66
    Points
    66
    Par défaut
    J'ai une autre question que je me pose (je suis débutant symfony2^^), les noms de répertoire uploads/xxx_profil_xxx/ et uploads/xxx_article_xxx/ je voudrais ne les avoir a ne les écrire qu'une fois.

    Je voudrais les avoir dans un fichier de config ou une variable globale pour qu'elle soit disponible autant dans mes entité que dans les fichier twig (au moins si le chemin change je n'aurais besoin de le changer qu'a un seul endroit).

    Merci par avance de vos réponses.

  7. #7
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 116
    Points : 66
    Points
    66
    Par défaut
    Bonjour,

    Merci de ta réponse avec cela c'est parfait tout devrait fonctionné comme je le veux. Je reviens vers vous en cas de problème sur ce sujet.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 116
    Points : 66
    Points
    66
    Par défaut
    Mes problèmes sont résolus. Encore merci de ton aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/12/2013, 22h06
  2. Réponses: 3
    Dernier message: 28/08/2007, 10h31
  3. [Upload] upload multiple de fichiers différents
    Par Sonny.j dans le forum Langage
    Réponses: 2
    Dernier message: 30/05/2007, 17h23
  4. Réponses: 10
    Dernier message: 15/01/2007, 09h17
  5. Réponses: 1
    Dernier message: 26/07/2006, 02h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo