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 :

upload [2.x]


Sujet :

Symfony PHP

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2012
    Messages : 55
    Points : 30
    Points
    30
    Par défaut upload
    Bonjour,

    je veux uploader des fichiers.xsl et les enregistrer avec leurs versions dans la base de données,c'est pour ca j'ai ajouté dans mon code une variable $version et je l'incrémente lors de chaque upload mais je vois toujours que le version 1 et je ne sais pas c'est quoi le probleme voila mon code n'hésitez pas a m'aider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    $document = new Document();
            $form = $this->createFormBuilder($document)        
            ->add('file', 'file',array(
                  'label'=>'PP5'))        
            ->getForm();        
            $request = $this->getRequest();
            $id=$request->get('id');
            $type=$request->get('type');
            $avv = $this->getDoctrine()->getRepository('MyAppAvvBundle:Avv')->find($id);
            $a=$avv->getprojet();
            for($i=0;$i<20;$i++ ){
            	$version= 0;
            	$version++;
            	var_dump($version);
     
            }
           // $chemin=$this->container->getParameter('chemin');
            //var_dump($chemin);
            //die();
            $rep =__DIR__.'/../../../../web/'.'uploads/documents/'.$a.'/';  
     
            //$lockFile = $rep."//fichier.lock";
            $lockFile = $rep.$a."_".$type.".lock";        
            //$nom_lock=$a."_".$type.".lock";
            $hasLock = is_file($lockFile);
            if($request->getMethod() == "POST")
            {
                $form->bindRequest($request);
                if($form->isValid())
                {
     
                    $em = $this->container->get('doctrine')->getEntityManager();
                    $nom_file=$a.'_'.$type.'-'.$version.'.xlsm';
                    $document->setAvv($avv);
                    $document->setFile($nom_file);
                   //$document->upload();      
     
                    //$dir=__DIR__.'/../../../../web/'.'uploads/documents/'.'/'.$avv->getProjet();
                    $form['file']->getData()->move($rep,$nom_file);
                    $em->persist($document);
                    $em->flush();        
                    unlink($lockFile);
                   }
            }
            $hasLock = is_file($lockFile);
            return $this->container->get('templating')->renderResponse('MyAppAvvBundle:Default:PP5.html.twig', array
                    ('form' => $form->createView(),
                     'var' => $id,
                     'hasLock' => $hasLock
                    ));
    Merci d'avance.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    t'as boucle est fausse, tu met la valeur a 0 a chaque tour
    le numéro de version est dans la base ?

    par contre faut pas faire de l'upload direct dans le dossier web

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2012
    Messages : 55
    Points : 30
    Points
    30
    Par défaut
    Merci pour ta reponse,en fait y a pas un champ version dans la base de donnée il y a que le nom de file qui contient le numero de version voila mon code apres la modif:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    $document = new Document();
            $form = $this->createFormBuilder($document)        
            ->add('file', 'file',array(
                  'label'=>'PP5'))        
            ->getForm();        
            $request = $this->getRequest();
            $id=$request->get('id');
            $type=$request->get('type');
            $avv = $this->getDoctrine()->getRepository('MyAppAvvBundle:Avv')->find($id);
            $a=$avv->getprojet();
            for($i=0;$i<20;$i++ ){
            	$version=1;
            	$version=$version+$i;
            	var_dump($version);
     
            }
           // $chemin=$this->container->getParameter('chemin');
            //var_dump($chemin);
            //die();
            $rep =__DIR__.'/../../../../web/'.'uploads/documents/'.$a.'/';  
     
            //$lockFile = $rep."//fichier.lock";
            $lockFile = $rep.$a."_".$type.".lock";        
            //$nom_lock=$a."_".$type.".lock";
            $hasLock = is_file($lockFile);
            if($request->getMethod() == "POST")
            {
                $form->bindRequest($request);
                if($form->isValid())
                {
     
                    $em = $this->container->get('doctrine')->getEntityManager();
                    $nom_file=$a.'_'.$type.'-'.$version.'.xlsm';
                    $document->setAvv($avv);
                    $document->setFile($nom_file);
                   //$document->upload();      
     
                    //$dir=__DIR__.'/../../../../web/'.'uploads/documents/'.'/'.$avv->getProjet();
                    $form['file']->getData()->move($rep,$nom_file);
                    $em->persist($document);
                    $em->flush();        
                    unlink($lockFile);
                   }
            }
            $hasLock = is_file($lockFile);
            return $this->container->get('templating')->renderResponse('MyAppAvvBundle:Default:PP5.html.twig', array
                    ('form' => $form->createView(),
                     'var' => $id,
                     'hasLock' => $hasLock
                    ));
    Merci

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    la boucle ne sert a rien, autant regarder $i direct, et si ça dépasse 20 ?
    utilise plutôt le Finder, pour trouver le dernier numéro

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2012
    Messages : 55
    Points : 30
    Points
    30
    Par défaut
    comment j'incremente la version sans utiliser la boucle?

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par Mme Idel Voir le message
    comment j'incremente la version sans utiliser la boucle?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for($version=0;$version<20;$version++ ){
    mais utilise le Finder

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2012
    Messages : 55
    Points : 30
    Points
    30
    Par défaut
    il m'affiche toujours null j'arrive pas a récupéré la version.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for($version=0;$version<4;$version++){
                	$ver = $document->getVersion();
                	var_dump($ver);}
    Merci d'avance

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    relis bien, tu vois bien que $version ne sert pas la dans ta boucle ...

  9. #9
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2012
    Messages : 55
    Points : 30
    Points
    30
    Par défaut
    Non je l'utilise voila mon code l'autre n est pas mis a jour.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for($version=0;$version<4;$version++){
                	$ver = $document->getVersion();
                	$very=$ver+$version;
                	var_dump($very);}
    Merci

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    pour le mettre a jour faut faire setVersion, mais je croyai que t'avais pas de champs version dans ta base ?

  11. #11
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2012
    Messages : 55
    Points : 30
    Points
    30
    Par défaut
    il m'affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    null
     
    null
     
    null
     
    null
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for($version=0;$version<4;$version++){
                	$ver = $document->setVersion($version);
                	//$very=$ver+$version;
                	var_dump($ver);}
                    $em = $this->container->get('doctrine')->getEntityManager();
                    $nom_file=$a.'_'.$type.'-'.$ver.'.xlsm';

  12. #12
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    setVersion ne renvoie rien,
    si tu connais pas les bases de PHP n'utilise Symfony ...

  13. #13
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2012
    Messages : 55
    Points : 30
    Points
    30
    Par défaut
    sauf erreur de moi,il y a un champ version dans ma base et pour setversion je veux pas qu'elle me retourne mais de modifier la version.je crois que je me suis perdu parceque c'est la premiere fois j'utilise symfony

    voila entity document:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    <?php
     
    namespace MyApp\AvvBundle\Entity;
     
    use Doctrine\ORM\Mapping as ORM;
    use Symfony\Component\HttpFoundation\File\UploadedFile;
     
    /**
     * MyApp\AvvBundle\Entity\Document
     *
     * @ORM\Table()
     * @ORM\Entity
     */
    class Document
    {
        /**
         * @var integer $id
         *
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        private $id;
     
        /**
         * @var string $file
         *
         * @ORM\Column(name="file", type="string", length=255)
         */
        private $file;
     
        /**
         * @var string $version
         *
         * @ORM\Column(name="version", type="string", length=255)
         */
        private $version;
     
        /**
         * @ORM\ManyToOne(targetEntity="Avv", inversedBy="Document")
         * @ORM\JoinColumn(name="avv_id", referencedColumnName="id")
         */
        protected $avv;
     
     
        //formate le nom de fichier 
     
     
        /**
         * Get id
         *
         * @return integer 
         */
        public function getId()
        {
            return $this->id;
        }
     
        /**
         * Set file
         *
         * @param string $file
         */
        public function setFile($file)
        {
            $this->file = $file;
        }
     
        /**
         * Get file
         *
         * @return string 
         */
        public function getFile()
        {
            return $this->file;
        }
     
        /**
         * Set version
         *
         * @param string $version
         */
        public function setVersion($version)
        {
            $this->version = $version;
        }
     
        /**
         * Get version
         *
         * @return string 
         */
        public function getVersion()
        {
            return $this->version;
        }
     
        /**
         * Set avv
         *
         * @param MyApp\AvvBundle\Entity\Avv $avv
         */
        public function setAvv(\MyApp\AvvBundle\Entity\Avv $avv)
        {
            $this->avv = $avv;
        }
     
        /**
         * Get avv
         *
         * @return MyApp\AvvBundle\Entity\Avv 
         */
        public function getAvv()
        {
            return $this->avv;
        }
    }
    mon action:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    public function PP5action(){
            $document = new Document();
            $form = $this->createFormBuilder($document)        
            ->add('file', 'file',array(
                  'label'=>'PP5'))        
            ->getForm();        
            $request = $this->getRequest();
            $id=$request->get('id');
            $type=$request->get('type');
            $avv = $this->getDoctrine()->getRepository('MyAppAvvBundle:Avv')->find($id);
            $a=$avv->getprojet();
           // $version=1;        	     
            $rep =__DIR__.'/../../../../web/'.'uploads/documents/'.$a.'/';            
            $lockFile = $rep.$a."_".$type.".lock";          
            $hasLock = is_file($lockFile);
            if($request->getMethod() == "POST")
            {
                $form->bindRequest($request);
                if  ($form->isValid()){
     
                	for($version=0;$version<4;$version++){
                	$ver = $document->setVersion($version);
                	//$very=$ver+$version;
                	var_dump($ver);}
                    $em = $this->container->get('doctrine')->getEntityManager();
                    $nom_file=$a.'_'.$type.'-'.$ver.'.xlsm';
                    $document->setAvv($avv);
                    $document->setFile($nom_file);
                    //$document->setVersion($version);
                    $form['file']->getData()->move($rep,$nom_file);
                    $em->persist($document);
                    $em->flush();        
                    unlink($lockFile);               
                   }
            }
            $hasLock = is_file($lockFile);
            return $this->container->get('templating')->renderResponse('MyAppAvvBundle:Default:PP5.html.twig', array
                    ('form' => $form->createView(),
                     'var' => $id,
                     'hasLock' => $hasLock
                    ));
        }

  14. #14
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2012
    Messages : 55
    Points : 30
    Points
    30
    Par défaut
    Merci bc pour vos aides

  15. #15
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    lis (et relis) bien avant de copier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <?php
    public function pp5Action()
    {
        $em = $this->getDoctrine->getEntityManager();
     
        $document = new Document();
        $form = $this->createFormBuilder($document)
                     ->add('pp5', 'file')
                     ->getForm();
     
        $request = $this->getRequest();
     
        $id = $request->get('id');
        $type = $request->get('type');
     
        $avv = $em->getRepository('MyAppAvvBundle:Avv')->find($id);
        $project = $avv->getProjet();
     
     
        $rep = __DIR__.'/../../../../web/uploads/documents/'.$a.'/';
     
        if ($request->getMethod() == "POST") {
            $form->bindRequest($request);
            $version = 0;
     
            do {
                $version++;
                $filename = sprintf('%s_%s_%d.xlsm', $project, $type, $version);
            }  while (file_exists($rep.$filename));
     
     
            $document->setAvv($avv);
            $document->setFile($filename);
            $document->setVersion($version);
     
            $em->persist($document);
            $em->flush();
     
            $form['pp5']->getData()->move($rep, $filename);
        }
     
        return array (
            'form' => $form->createView(),
            'var' => $id
        );
    }

  16. #16
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2012
    Messages : 55
    Points : 30
    Points
    30
    Par défaut
    Merci infiniment .

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

Discussions similaires

  1. Probleme d'upload
    Par FreshVic dans le forum Struts 1
    Réponses: 10
    Dernier message: 22/05/2006, 17h15
  2. [Struts][Oracle]Upload fichier word dans une base
    Par Maximil ian dans le forum Struts 1
    Réponses: 7
    Dernier message: 10/02/2004, 15h52
  3. Réponses: 10
    Dernier message: 18/11/2003, 18h01
  4. [servlet]upload en java
    Par dash dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 31/10/2003, 11h13
  5. url d'une page asp ou upload avec get
    Par taupin dans le forum ASP
    Réponses: 18
    Dernier message: 22/08/2003, 14h25

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