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

Langage PHP Discussion :

Vérification de fichier téléchargé


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de Shandler
    Profil pro
    Inscrit en
    Février 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 514
    Par défaut Vérification de fichier téléchargé
    Bonjour,

    Voila j'ai le code ci-dessous qui marche trés bien.

    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
    function tansfert($nom_file,$taille,$destination)
    {	  		                   
        //Comparaison de la taille de l'image.
        if($_FILES[$nom_file]['size'] > $taille && (substr($_FILES[$nom_file]['type'],0,5) == 'image')))
        {                               
          return 'Votre fichier dois avoir une taille max de '.$taille;
        }                     
        else
        {
          //Code permettant d'enlever l'ancienne extension du fichier.
      		$extension= substr($_FILES[$nom_file]['name'], strrpos($_FILES[$nom_file]['name'],"."));
     
      		$Nom_Fichier=str_replace($extension,'',$_FILES[$nom_file]['name']);
     
      		$New_Fichier = $Nom_Fichier.$extension;		
     
           //Condition permettant d'ajouter un chiffre si le nom de la photo existe deja.
      	   while(file_exists($destination."/".$New_Fichier))
      	   {
      	      $i++;
      	      $New_Fichier = $Nom_Fichier."_".$i.$extension;
      	   }
     
    			 //Condition permettant d'insérer le fichier telecharger dans le repertoire destinataire.
    	     if(!move_uploaded_file($_FILES[$nom_file]['tmp_name'],$destination."/".$New_Fichier))
    	     {
              return 'erreur de transfere';
           }
         }			                                  
    }
    Donc voila mon problème c'est que lorsque j'utilise cette fonction 2 fois dans un formulaire pour envoyer 2 types de fichiers (video et image).
    Aprés validation si une erreur survient sur l'un des fichiers télécharger le 2eme est quand même télécharger car lui n'a pas d'erreur.

    Mais ce que je voudrais c'est que les 2 fichiers soit télécharger si y a pas d'erreur et si une erreur survient sur l'un des 2, aucun des 2 fichiers n'est uploader.

    Merci de votre aide.

  2. #2
    Membre confirmé Avatar de arnobase
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Par défaut
    alors il faudrait te débrouiler pour tester le retour de cette fonction au niveau supérieur et ne lancer l'up du deuxième que si le premier s'est bien passé (peut-etre qu'un code d'erreur serait plus simple a gerer que ton message...)

    genre
    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
     
    if (tansfert($nom_file1,$taille,$destination) != -1) {
        if (tansfert($nom_file2,$taille,$destination) != -1) {
            echo "tout va bien";
            ...
        }
        else {
            echo "problème fichier 2";
            ...
        }
    }
    else {
        echo "problème fichier 1";
        ...
    }
    enfin genre koi...

    [EDIT] oui sauf que la le premier fichier s'uploade qd meme si le deuxieme plante mais bon tu peux adapter... [/EDIT]

  3. #3
    Membre chevronné Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Par défaut
    Pour compléter ce que dit arnobase, tu peux faire en sorte que tansfert() retourne le nouveau pathfile du fichier ajouté. La fonction qui call transfert() plusieurs fois peut empiler ces pathfile dans un tableau par exemple et utiliser ces données ensuite pour faire des unlink() si transfert() échoue une fois

  4. #4
    Membre éclairé Avatar de Shandler
    Profil pro
    Inscrit en
    Février 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 514
    Par défaut
    En gros ce que vous me conseillez c'est de supprimer le fichier uploader si une erreur survient.
    Mais disons que si l'utilisateur envoie un fichier dont l'un 2 est assez gros type video et que le 2éme fichier est une image mais la taille est pas bonne.
    Donc l'utilisateur valide son formulaire attend un certain temps que la vidéo qui elle est bonne finisse de se télécharger pour en faite se retrouver encore devant le formulaire avec l'erreur pour la photo et donc il doit re-envoyer la vidéo.

    Je pense que se systéme risque d'etre lourd vis a vis de l'utilisateur.

    Merci a vous

  5. #5
    Membre confirmé Avatar de arnobase
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Par défaut
    bah alors tu supprime pas ton fichier et tu stocke l'etat de l'up de chaque élément dans une variable session par exemple...
    Après tu rajoute un test de l'upload avant d'envoyer et c'est darti mon kiki

    je pense à un controle de serveur comme dans les formulaires ou on fait apparaitre des messages en rouge si un champ n'est pas correct, ben là tu testes si ton fichier est déja uploadé et si c'est le cas tu ne remet pas le champ correspondant dans ta page lors d'un deuxième appel...

  6. #6
    Membre chevronné Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Par défaut
    Mais ce que je voudrais c'est que les 2 fichiers soit télécharger si y a pas d'erreur et si une erreur survient sur l'un des 2, aucun des 2 fichiers n'est uploader.
    Moi j'ai compris que tu ne voulais garder aucun fichier dans le cas d'une erreur sur un seul fichier.

    Tu n'as qu'a utiliser la même technique que dans mon post précédent sauf que si jamais il y a une erreur, les call à transfert() continuent jusqu'au dernier fichier. Ensuite tu sauras quel fichier(s) n'est pas bon et tu pourras générer un formulaire juste pour ce(s) fichier(s) là.

  7. #7
    Membre éclairé Avatar de Shandler
    Profil pro
    Inscrit en
    Février 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 514
    Par défaut
    goodpz tu as compris ce que je voulais mais sauf que avec ta technique les fichiers bon son télécharger et en faite mon formulaire renvoie que les fichiers qu'il a pas réussi a télécharger si j'ai bien compris ton idée car cette technique j'y avais pensé mais je trouvais ca assez lourd coté script.

    Merci

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/07/2007, 11h30
  2. Connaitre les fichiers téléchargés
    Par gifffftane dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 25/05/2007, 11h06
  3. Empêcher la vérification des fichiers du compilateur
    Par Sub dans le forum Code::Blocks
    Réponses: 2
    Dernier message: 29/03/2007, 18h49
  4. Fichier téléchargé par header corrompu
    Par kvndevils dans le forum Langage
    Réponses: 2
    Dernier message: 25/12/2006, 15h44
  5. Vérification de fichiers uploadés
    Par pod1978 dans le forum Langage
    Réponses: 6
    Dernier message: 12/12/2006, 14h02

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