[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
A voir également:

12 réponses

Tiller Messages postés 781 Date d'inscription   Statut Membre Dernière intervention   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
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
Tiller Messages postés 781 Date d'inscription   Statut Membre Dernière intervention   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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tiller Messages postés 781 Date d'inscription   Statut Membre Dernière intervention   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
chris
 
okok merci je test ça tout de suite !!!

chris
0
Tiller Messages postés 781 Date d'inscription   Statut Membre Dernière intervention   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
Tiller Messages postés 781 Date d'inscription   Statut Membre Dernière intervention   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
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
chris
 
c'est cool ça marche !!!!
en effet je n'avais pas <input type="hidden" name="posted">
merci de ton aide !!!

Chris
0
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
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