[php]upload 2 images

chris -  
 chris -
Bonjour,
voila je cherche un code pour pouvoir uploader 2 images en même temps.... vous allez me dire regarde sur google.... c'est ce que j'ai fait... mais pour être franc je n'ai pas tout compris.... je débute en php et la j'avoue que je suis perdu !!!

merci de votre aide....
chris

12 réponses

  1. Tiller Messages postés 783 Statut Membre 211
     
    for ($i = 0; $i < count($_FILES['userfile']['name']); $i++)
    {
    	if (isset($_POST['posted'])) // Regarde ici, si dans ton formulaire t'as un <input type="hidden" name="posted"> et que le form est en action="POST"
    	{
    		$content_dir = 'upload/'; // Vérifie que ce dossier existe
    		$tmp_file = $_FILES['userfile']['tmp_name'][$i];
    		$nom_file = $_FILES['userfile']['name'][$i];
    		if (!is_uploaded_file($tmp_file))
    			exit('Le fichier est introuvable');
    		
    		$type_file = $_FILES['userfile']['type'];
    		$allowedExt = array('jpg', 'jpeg', 'bmp', 'gif', 'png');
    		if (in_array(strtolower($type_file), $allowedExt))
    			exit('Le fichier n\'est pas une image');
    		
    		$name_file = $_FILES['userfile']['name'];
    		if (preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $name_file))
    			exit('Nom de fichier non valide');
    		
    		if (!move_uploaded_file($tmp_file, $content_dir.$name_file))
    			exit('Impossible de copier le fichier dans '.$content_dir);
    		
    		echo 'Le fichier a bien été uploadé';
    	}
    }
    3
  2. chris
     
    j'ai tenu compte de ton dernier post et voici mon code.... mais rien ne s'affiche.....je pense que c'est faux ce que j'ai fais....

    code :

    for ($i = 0; $i < count($_FILES['userfile']['name']); $i++)
    {
    if( isset($_POST['posted']) ) // si formulaire soumis
    {
    $content_dir = 'upload/'; // dossier où sera déplacé le fichier
    $tmp_file = $_FILES['fichier']['tmp_name'];
    $nom_file=$_FILES['fichier']['name'];
    if( !is_uploaded_file($tmp_file) )
    {
    exit("Le fichier est introuvable");
    }

    // on vérifie maintenant l'extension
    $type_file = $_FILES['fichier']['type'];

    if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') && !strstr($type_file, 'png') )
    {
    exit("Le fichier n'est pas une image");
    }

    // on copie le fichier dans le dossier de destination
    $name_file = $_FILES['fichier']['name'];
    if( preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $name_file) )
    {
    exit("Nom de fichier non valide");
    }
    if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
    {
    exit("Impossible de copier le fichier dans $content_dir");
    }
    echo "Le fichier a bien été uploadé";
    }
    }

    merci
    chris
    1
  3. Tiller Messages postés 783 Statut Membre 211
     
    Coté html, tu fais plusieurs input file, avec comme name="cequetuveux[]"
    Niveau php,
    <?php
    foreach($_FILES['cequetasvoulus'] as $file) //Ne pas mettre les []
    {
        //Ici c'est le systeme classique, sauf que au lieu d'utilisé la variable $_FILES, tu utilises $file
        //Nom du fichier: $file['name'];
        ...
    }
    ?>
    0
  4. chris
     
    donc si je comprend bien le foreach sert de boucle pour tout les fichiers a uploader? et c'est dans le foreach que je dois faire les test (si je veux en mettre!!)? il n'y a rien en dehors du foreach a ajouter?
    désolé.... j'essai juste de comprendre comment ça marche... parce que pour moi c'est encore assez flou .... j'ai trouvé des exemples pour un seul upload mais dès que je passe à 2 uploads en même temps je suis perdu et je n'y comprend plus rien .... je ne sais comment adapter mon code.....

    merci pour la réponse !!!
    chris
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Tiller Messages postés 783 Statut Membre 211
     
    Rien autour du foreach qui sert de boucle ouai.
    Ensuite tu met tes tests, puis la fonction move_uploaded_file() (De tete c'est sa) avec $file['tmp'] (De tete aussi)
    0
  7. chris
     
    okok merci je test ça tout de suite !!!

    chris
    0
  8. Tiller Messages postés 783 Statut Membre 211
     
    Euh non désolé j'ai deconné, c'est pas sa niveau PHP désolé
    <?php
    for ($i = 0; $i < count($_FILES['cequetuasvoulus']['name']); $i++) //sans les []
    {
        //Ici c'est le systeme classique, sauf que tu rajoutes [$i]
        //Nom du fichier: $_FILES['cequetuasvoulus']['name'][$i];
        ...
    }
    ?>
    0
  9. Tiller Messages postés 783 Statut Membre 211
     
    $tmp_file = $_FILES['fichier']['tmp_name'];
    $nom_file=$_FILES['fichier']['name']; 


    Tu dois mettre [$i]
    $tmp_file = $_FILES['fichier']['tmp_name'][$i];
    $nom_file=$_FILES['fichier']['name'][$i]; 

    Et ceux a toute les variables $_FILES sauf a celle du for
    0
  10. chris
     
    je viens de mettre les [$i] mais ça ne marche toujours pas... rien ne s'affiche et lupload n'a pas lieu

    Chris
    0
  11. chris
     
    c'est cool ça marche !!!!
    en effet je n'avais pas <input type="hidden" name="posted">
    merci de ton aide !!!

    Chris
    0
  12. chris
     
    hey c'est encore moi !!! je voudrais savoir comment faire pour enregistrées le chemin de ces 2 photos dans ma base de données. j'ai donc 2 champs dans ma BDD, photo et photo_grand et je ne sais pas comment lui dire que la première image uploader c'est pour le champs photo et l'autre pour le champ photo_grand...

    encore merci de votre aide

    Chris
    0
  13. chris
     
    Personne ne sait comment faire? (j'ai poursuivi la conversation... comme ça on voit ce qui c'est passer avant par rapport.... )

    merci pour votre aide

    Chris
    0