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

Zend Framework PHP Discussion :

chercher les doublons des noms d'images uplader


Sujet :

Zend Framework PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 222
    Par défaut chercher les doublons des noms d'images uplader
    Bonjour, a tous

    j'aimerais chercher les doublons des noms des fichiers uploader car j'utlise rename() pour renomer les images , si je ne le fait pas et que on a 2 fichier du même nom, zend fera une erreur car il ne trouvera pas le fichier dans le même dossier en question puisqu'il qu'il a été modifier donc n'existe plus.

    voic mon multi formulaire on peut uploader 4 fichier , je n'impose pas d'en avoir 4
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
                    //==================upload image zom===========
            $upl_big = new Zend_Form_Element_File('upload_big');
            $upl_big->setLabel('Telecharger image princpal:')
                    ->setDestination('../public/image/big/');
            $upl_big->addValidator('Count', false, array('min'=>0,'max'=>5));
            // Limite à 100K
            $upl_big->addValidator('Size', false, 102400);
            // seulement des JPEG, PNG, et des GIF
            $upl_big->addValidator('Extension', false, 'jpg');
            // définit 3 éléments fichiers identiques
            $upl_big->setMultiFile(4);
            $this->addElement($upl_big ,'upload_big');
    je récupère donc mon fichier avec value
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $form->getValue('upload_big');
    ici y a déjà un problème
    soit on a uploader qu'une seul iamge -> on a $getValue = "mon image.jpg";


    soit on n'upload plusieur image -> on a $getValue ="array()"

    je suis du traiter ces 2 résulats différement.

    j'ai donc implémenter un methode ( public function findDoublon($fd)) dans le controleur de la table qui s'appelle "car" .

    donc j'envoie la réponse via le controlleur par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    findDoublon($form->getValue())
    voici ma methode
    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
     
        public function findDoublon($fd) {
           // var_dump($fd);
               $this->total_img = count($fd) ;
               if($this->total_img == 1)
               {
                   echo "impossibe de traiter car ce n'est pas un array";
                   echo "récupération du nom de l'image et insertion dans la bdd";
               }
               else
               {
                   foreach ($fd as $scan) // je récupère sous forme $getValue('image') sous form d'image
                   {
                       $find_double[] = $scan;
                   }
     
                    for($i=0; $i<3;$i++) //je crée une boucle pour imposer 4 nom de fichier même s'il n'on pas été uplaoder
                    {
                        if(isset($find_double[$i+1])  ) //je vérifie si on n'a pas uploader l'image
                        {
                              $temp= $find_double[$i];
                              echo"----". $temp;
                        } 
                          else
                          {
                              $find_double[$i] ='nc.jpg'; //on remplis les infos par nc.jpg si on n'a pas uplaoder
                          }
                      }
     
                      var_dump ($find_double);
            }
        }
    ici je detecte bien les doublons et je les renoment, par contre pensez vous que je puisse faire plus obtimiser ?

    si oui , pouvez vous juste me dire la façon de faire après je chercherais et testerais votre solution

    je vous remercie d'avance pour les réponses

  2. #2
    Membre Expert
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Par défaut
    Le plus simple est de gérer en amont et ne pas autoriser les doublons

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 222
    Par défaut
    merci de ta réponse

    il faut utiliser un filtre c'est ça?

    ou faut t'il vérifier les doublons ? dans form.php ou le controlleur ?

    ou bien, on ne peut pas vérifier ce que l'on choisi comme nom de fichier, il faut une fois qu'on a cliquer sur le bouton "envoyer" récuper le getrequest() , vérfier s'il n'y a pas de doublon, s'il y en a on recommence la saisie ?

  4. #4
    Membre Expert
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Par défaut
    Tu créer un validateur qui vérifie ton champs correspondant à ton input de type file.

    Aprés tu as plusieurs moyens, je pense qu'il faudrait plus modifier le nom de l'image plutot que d'interdire son upload.

    Par contre je pense que tu ne cherche pas assez au vue de tes question, donc ma question est la suivante :
    Est ce que tu connais bien le PHP ?

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 222
    Par défaut
    je pense connaitre suffisant le php pour partiquer zend framework, avant cela faisait 2 mois que j'étais sur symonfy.

    enfin j'ai déjà des connaissance en programmation objet, mais je préparais 2 UV avec JAVA.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Aprés tu as plusieurs moyens, je pense qu'il faudrait plus modifier le nom de l'image plutot que d'interdire son upload.
    je crois que j'ai fait un petite pas j'ai trouver comment changer le nom du fichier de l'image avant sa validation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
          $upl_show = new Zend_Form_Element_File('upload_show');
    //...
            echo "<h1>".$upl_show->getFileName()."</h1>";
    en faisant ce script dans mon fichier "from", j'ai vu apparaître en gros le lien et le noms du fichier que j'ai télécharger.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ./public/image/show\2.jpg
    je pense qu'avec une regex, je vais extraire le nom du fichier pour le comparer et pour trouver un double

    après j'ai aussi trouver la bonne method pour changer le nom du fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            $upl_show->addFilter('Rename','couou');
    en faisant un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var_dump($form->getValue('upload')
    j'ai que j'avais bien changer le nom du fichier

    maintenant je pense qu'il me reste de tester si le nom du fichier est vide (donc pas uploader) , si elle est vide je lui met d'office "nc.jpg", et je pense que j'aurai un autre difficulté c'est chercher s'il y a un doublon.

    Mainentant je peux modifier un fichier seulement pour 1 seul élément
    mais c'est plus délicat quand on demande de faire plusieurs upload en même temps

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            $upl_big->setMultiFile(4);
    Ces méthode sont vaiment simple, mais je ne les trouvais pas, ca faisait 3 jours que j'écummais la doc, est trop dense pour chercher rapidement ce que l'on veut.

Discussions similaires

  1. comment chercher les doublons sur deux champs (ou plus)
    Par alili mostafa dans le forum Bases de données
    Réponses: 4
    Dernier message: 31/05/2010, 19h09
  2. [WD12] Chercher les doublons dans un fichier texte
    Par matt1704 dans le forum WinDev
    Réponses: 17
    Dernier message: 11/06/2009, 08h31
  3. lecture des noms d'images dans un dossier
    Par saxegaard dans le forum Général Python
    Réponses: 2
    Dernier message: 18/05/2008, 03h15
  4. Chercher les doublons de photos et d’image
    Par tit_lezard dans le forum Windows XP
    Réponses: 8
    Dernier message: 23/04/2007, 01h31
  5. Supprimer les espaces des noms de fichier
    Par Cathy dans le forum Linux
    Réponses: 20
    Dernier message: 04/08/2005, 17h13

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