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 :

Multi upload de documents


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 111
    Points : 42
    Points
    42
    Par défaut Multi upload de documents
    Bonjour,

    J'utilise le code PHP suivant afin d'uploader plusieurs fichiers dans un répertoire, j'essaie de modifier ce code afin de passer par une variable le nom du dossier.
    La variable récupérée par POST ($ProcedureRef) passe et s'affiche correctement, mais le script affiche l'erreur suivante, je pense que c'est du à la boucle, mais je ne sais pas comment solutionner ce problème...
    Notice: Undefined index: ProcedureRef in C:\xxxx\upload.php on line 5
    Fichier n°3 uploadé : AA.pdf (1197 ko)
    Opération terminée.
    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
    <?php
    error_reporting(E_ALL);
    $variables = get_defined_vars(); 
    // JE RECUPERE LA VARIABLE N° de PROCEDURE
    $ProcedureRef = $_POST['ProcedureRef']; echo $ProcedureRef;
    //===============================================================================
    //
    //  UPLOAD HTTP 
    //
    //===============================================================================
    $maxfiles = 3;
    $maxsize = 2000000;
    $finaldir = '$ProcedureRef';
     
     
    //===============================================================================
    //  TRAITEMENT DU FORMULAIRE
    //===============================================================================
    if(isset($_POST['valider'])){
     
      //=============================================================================
      //  TEST DU NOMBRE DE FICHIERS POSTES
      //=============================================================================
      $nbr=0;
      for($x=0;$x<$maxfiles;$x++) 
        if(!empty($_FILES['userfile']['name'][$x])) $nbr++;
      if($nbr<=0) die("Aucun fichier spécifié !<br/>"); 
     
      //=============================================================================
      //  CREATION DE L'ARBORESCENCE POUR LE DOSSIER DESTINATION
      //=============================================================================
      if(!empty($finaldir)) { 
         if(substr($finaldir,strlen($finaldir)-1,1)=='/') $finaldir.='/'; 
         $dir=explode('/',$finaldir); 
         $finaldir=''; 
         for($x=0;$x<count($dir);$x++) { 
            $finaldir.=$dir[$x].'/'; 
            if(!@is_dir($finaldir)) @mkdir($finaldir,0777); 
         } 
         if(!@is_dir($finaldir)) die("Le dossier $finaldir est invalide !<br/>"); 
      } 
     
      //=============================================================================
      //  TELECHARGEMENT DES FICHIERS
      //=============================================================================
      for($x=1;$x<=$maxfiles;$x++) {
        $errorhttp=$_FILES['userfile']['error'][$x-1];
        $filenamehttp=$_FILES['userfile']['name'][$x-1];
        $typehttp=$_FILES['userfile']['type'][$x-1]; 
        $sizehttp=$_FILES['userfile']['size'][$x-1];
        $tmpfilehttp=$_FILES['userfile']['tmp_name'][$x-1];
        if (($errorhttp)and(!empty($filenamehttp))) { 
          switch ($errorhttp){ 
            case 1: echo "Erreur : Le fichier n°$x est trop grand !<br/>";break; 
            case 2: echo "Erreur : Le fichier n°$x est trop grand !<br/>";break; 
            case 3: echo "Erreur : Transfert du fichier n°$x interrompu !<br/>";break; 
            case 4: echo "Erreur : Le fichier n°$x est vide !<br/>";break; 
          } 
        } else {      
          if((!empty($filenamehttp))and($sizehttp>0)) {
            if($sizehttp<=$maxsize){
              if(@is_uploaded_file($tmpfilehttp)) { 
                 if(@eregi('.php',$filenamehttp)) $filenamehttp.='.txt';
                 if(filesize($tmpfilehttp)==$sizehttp) {
                   if(@move_uploaded_file($tmpfilehttp,$finaldir.$filenamehttp)) { 
                      @chmod($filenamehttp,0777); 
                      echo "Fichier n°$x uploadé : ".basename($filenamehttp).
                           " (".round(max($sizehttp,1024)/1024)." ko)<br/>";
                   } else echo "Erreur de téléchargement du fichier n°$x !<br/>"; 
                 } else echo "Erreur de téléchargement du fichier n°$x !<br/>";
              } else echo "Erreur de téléchargement du fichier n°$x !<br/>"; 
            } else echo "Erreur : Le fichier n°$x est trop grand !<br/>"; 
          } // else echo "Le fichier n°$x est introuvable ou vide !<br/>";
        }
      }
     
      die ("Opération terminée.<br/>");
    }
     
    //===============================================================================
    //  FORMULAIRE HTML
    //===============================================================================
    echo '<form method="post" enctype="multipart/form-data"'.
         ' onSubmit="document.getElementById(\'valider\').style.visibility=\'hidden\';">'. 
         '<input type="hidden" name="MAX_FILE_SIZE" value="'.$maxsize.'"/>';
    for($x=1;$x<=max($maxfiles,1);$x++)
      echo ' Fichier n°'.$x.' : <input type="file" name="userfile[]" size="20"/><br/>';
    echo '<br/><input type="submit" name="valider" value="Envoyer..."/>'.
         '</form>';
     
     
    //===============================================================================
     
    ?>
    Merci.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    D'ou vient ProcedureRef ?

    Au passage, tu as des ' en trop :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $finaldir = $ProcedureRef;
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 111
    Points : 42
    Points
    42
    Par défaut
    $ProcedureRef est envoyé pars le form dans la page d'avant avec ce bout de code.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form method='post' action='upload.php'>
    	<input type='hidden' name='ProcedureRef' value='$ProcedureRef'>
    	<input type='submit' value='Yes'>
    </form>

    Mais si je me contente uniquement de récupérer la variable, celle-ci s'affiche...

    J'ai essayé, la solution proposée, avec et sans quote, toujours la même erreur.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as donc un formulaire pour le nom du dossier et un formulaire pour les fichiers ?
    Il faut repasser le nom du repertoire dans le deuxième formulaire sinon il n'existe plus.
    Enfin ... il faudrait surtout revoir ton organisation car il semble que le nom du repertoire viennent d'encore avant le premier formulaire.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 111
    Points : 42
    Points
    42
    Par défaut
    Merci pour tes réponses.
    Tu as donc un formulaire pour le nom du dossier et un formulaire pour les fichiers ?
    La variable $ProcedureRef est envoyée depuis le premier formulaire, vers le formulaire upload.php si je me contente du code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
    error_reporting(E_ALL);
    $variables = get_defined_vars(); 
    // JE RECUPERE LA VARIABLE N° de PROCEDURE
    $ProcedureRef = $_POST['ProcedureRef']; echo $ProcedureRef;
    ?>
    La valeur de la variable $ProcedureRef , s'affiche correctement, donc ma variable passe bien dans le fomulaire upload.php
    C'est quand je rajoute, le reste du code (qui est fonctionnel et en service avec une constante pour finaldir --> $finaldir = 'uploadresult'; sur un intranet) que les ennuis commence.
    Ma piètre compréhension de php me fait dire que c'est la boucle, qui lors de son deuxiéme passage renvois une valeur vide...

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    ProcedureRef est bien envoyé du premier formulaire vers la page de traitement.
    Mais ensuite il n'existe plus quand tu soumets le deuxième formulaire.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre du Club
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 111
    Points : 42
    Points
    42
    Par défaut
    C'est bien là mon problème...

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Oui et je t'ai deja indiqué une solution.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre du Club
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 111
    Points : 42
    Points
    42
    Par défaut
    Ca j'ai bien lu entre les lignes de nos posts, depusi une heure je retourne le script en vain.

  10. #10
    Membre confirmé
    Avatar de Deuzz
    Homme Profil pro
    curieux
    Inscrit en
    Septembre 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : curieux
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2014
    Messages : 148
    Points : 521
    Points
    521
    Par défaut
    Bonsoir

    Au hasard....

    Citation Envoyé par sabotage Voir le message
    Il faut repasser le nom du repertoire dans le deuxième formulaire sinon il n'existe plus.

  11. #11
    Membre du Club
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 111
    Points : 42
    Points
    42
    Par défaut
    J'ai solutionné.
    de cette façon.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="text" name="ProcedureRef" value="'.$ProcedureRef.'">
    <input type="submit" name="valider" value="Envoyer..."/>'.
    Merci.

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

Discussions similaires

  1. [AJAX] Multi-upload et Ajax
    Par Zeo34 dans le forum Général JavaScript
    Réponses: 28
    Dernier message: 14/06/2008, 01h21
  2. [AJAX] Multi upload Ajax
    Par popovitch130 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 22/05/2008, 18h29
  3. [Upload] Affichage document Word uploadé
    Par jappa1482 dans le forum Langage
    Réponses: 5
    Dernier message: 22/11/2007, 17h27
  4. [Upload] Multi upload sur un serveur
    Par krak70 dans le forum Langage
    Réponses: 3
    Dernier message: 07/10/2005, 12h44
  5. [PL/SQL][down&upLOAD] table document fixée
    Par meufeu dans le forum Oracle
    Réponses: 18
    Dernier message: 30/09/2004, 09h02

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