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 :

[Upload] Upload : erreur et envoi multiple


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut [Upload] Upload : erreur et envoi multiple
    Bonjour,

    Je suis en train de mettre au point un script pour uploader des photos sur un serveur.

    J'ai une erreur à la ligne lors du traitement des fichiers, a la ligne "foreach($fichier_source as $Key => $Value)", j'ai l'erreur :
    Warning: Invalid argument supplied for foreach() in c:\program files\easyphp1-8\www\site\photos\upload2.php on line 94
    Est ce que quelqu un voit d ou peut venir cette erreur?

    Voila le code :
    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
    <?php
    				$submit = $_POST['submit'];
    				if (!$submit)
    				{
    					include "fonctions.php";
    					connexion (1,"", 1, 1);
    			   		echo "
    						<form action='upload2.php' method='post' ENCTYPE='multipart/form-data'>
    							<INPUT type=hidden name=taille MAX_FILE_SIZE VALUE=2048> 
    							<table>
    						   		<tr>
    									<td>Photo 1 : </td>
    									<td>
    										<INPUT TYPE='file' NAME='fichier_source[]' SIZE='40'>
    									</td>
    								</tr>
    						   		<tr>
    									<td>Photo 2 : </td>
    									<td>
    										<INPUT TYPE='file' NAME='fichier_source[]' SIZE='40'>
    									</td>
    								</tr>
    						   		</table>
    							<INPUT TYPE='submit' VALUE='Envoyer' name='submit'>&nbsp;&nbsp;<INPUT TYPE='reset' VALUE='Annuler'>
    						</form>
    					";
    				}
    				else 
    				{
    					include "fonctions.php";
    					connexion(1, '', 1, 1);
    					$i=0;
    					foreach($fichier_source as $Key => $Value)
    					{
    						if(!empty($Value))
    						{	
    							if(is_uploaded_file($Value))
    							{
    								//Un fichier a été envoyé, nous pouvons le traiter
    								print "un fichier a ete envoyé ==> ttmt!";
    								$nom = $_FILES['fichier_source']['name'][$i];
    								$rep = "a_valider/".$nom;
    								print "<br>rep : $rep<br>";
    								if (move_uploaded_file($Value, $rep))
    								{
    									print "deplacement du fichier ok<br>";
    								}
    								else 
    								{
    									print "echec de move_upload<br>";
    								}
    							}
    							else 
    							{
    								print "echec de is_upload<br>";
    							}
    						}
    						else 
    						{
    							print "c'est vide<br>";
     
    						}
    						$i++;
    					}
     
    		}
    				?>
    De plus, comme je le fais dans mon script, je veux pouvoir envoyer plusieurs fichier en une seule fois.
    Pour le moment, je met une dizaine de champ "file" qui permet de choisir 10 fichiers différents et de les uploader en meme temps.

    Est ce qu'il y aurait un moyen qui permettrait de selectionner plusieurs fichiers en meme temps, sans avori a faire parcourir pour chacun, et de tous les envoyer?

    Merci a vous.

    Linou

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 44
    Points : 55
    Points
    55
    Par défaut
    Je ne vois pas l'affectation d'un tableau à ta variable $fichier_source.
    Je te conseilles de faire un "print_r($_POST);" pour savoir exactement les données renvoyées dans le post de ton formulaire...

  3. #3
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Salut!

    Tu trouveras dans la FAQ un exemple de script.
    Perso, voici celui que j'utilise (plus complet) :
    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
    <?php
    //===============================================================================
    //
    //  UPLOAD HTTP - Sub0 - 08/07/05
    //
    //===============================================================================
    $maxfiles = 3;
    $maxsize = 2000000;
    $finaldir = 'upload';
     
     
    //===============================================================================
    //  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>';
     
     
    //===============================================================================
    ?>

    Lien tout en bas à gauche de cette fenêtre
    De retour parmis vous après 10 ans!!

  4. #4
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut Re: Upload : erreur et envoi multiple
    Citation Envoyé par linou
    Est ce qu'il y aurait un moyen qui permettrait de selectionner plusieurs fichiers en meme temps, sans avori a faire parcourir pour chacun, et de tous les envoyer?
    http://www.developpez.net/forums/viewtopic.php?t=300739
    De retour parmis vous après 10 ans!!

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    Merci!

    Je me repenche sur le probleme ce soir, et vous tiens au courant!

    Linou

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

Discussions similaires

  1. [Upload] upload de fichier pour envoi par mail
    Par mdr_cedrick dans le forum Langage
    Réponses: 2
    Dernier message: 26/05/2009, 08h56
  2. Réponses: 8
    Dernier message: 15/10/2006, 18h45
  3. [Upload] upload fichier erreur
    Par dolf13 dans le forum Langage
    Réponses: 17
    Dernier message: 30/05/2006, 18h31
  4. [Upload] Fonction is_uploaded_file + envois multiples
    Par dj-julio dans le forum Langage
    Réponses: 7
    Dernier message: 21/12/2005, 14h50
  5. [Upload] upload multiple
    Par mat10000 dans le forum Langage
    Réponses: 3
    Dernier message: 16/06/2005, 17h07

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