Problème upload

Petit nouveau ! | 3 Messages

15 juin 2011, 14:49

Bonjour,

Voila plusieurs jours que je bloque sur un problème d'upload d'images:
Je cherche à effectuer un multi upload. Pour l'instant, j'ai créer mes onglets "parcourir" en dur (10 exactement). Mon problème j'arrive à récupérer le nom, l'extension de chaque photo mais non pas le chemin temporaire.... Le message suivant s'affiche "L'image n'a pas pu être uploadée sur le serveur"

ajout.php
print "<FORM action='ajout2.php' method='post' enctype='multipart/form-data'>";

for ($j=0; $j<=10; $j++)
{
print "<input type='hidden' name='MAX_FILE_SIZE' value='512000'>";
print "<input name='fichier[]' type='file'>";

};

ajout2.php
for ($j=0; $j<=10; $j++) 
{


	if ($_FILES['fichier']['name'][$j]!="")
	{
 
	// On vérifie le type du fichier
	$ext = pathinfo($_FILES['fichier']['name'][$j], PATHINFO_EXTENSION);
	
		if ($ext != 'png' && $ext != 'jpeg' && $ext != 'JPG' && $ext != 'jpg')
		{
		$erreur = 'Le fichier doit être au format *.jpeg ou *.png .';
		};
   
    // Si il y a une erreur on l'affiche sinon on peut uploader
	if(isset($erreur))
	{
	$msg="" . $erreur . "<br><a href=\"javascript:history.back(1)\">Retour</a>";
	}
	else
	{    
 
        $nom_fichier = "test.".$ext;
		$repertoire = 'images/'; // Repertoire d'upload
		
		
    // On upload le fichier sur le serveur.
		if (move_uploaded_file($_FILES['fichier']['tmp_name'][$j], $repertoire.$nom_fichier))
		{
		$msg="Votre image à été uploadée sur le serveur avec succes!";
		  
		}
		else
		{
        $msg="L'image n'a pas pu être uploadée sur le serveur.";
		};
     
	};

	print $msg; 
	};
};
Si quelqu'un sait comment faire, merci d'avance!!!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 juin 2011, 16:11

salut,

est ce que le répertoires images existe bien (dans le même répertoire que le fichier ajout2.php ?)
ton code est fonctionnel en dehors de ce soucis que j'ai eu ;)

je l'ai un peux modifié pour que tu ne soit pas géné par le nombre de champ input dans le formulaire (si demain tu en veux 48 ou 5 ça fonctionne toujours ;)
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <form action="" method="post" enctype="multipart/form-data">
        <?php
            for ($key=0; $key<=10; $key++)
            {
            print '<input type="hidden" name="MAX_FILE_SIZE" value="512000" />';
            print '<input name="fichier[]" type="file" /> <br />';
            };
        ?>
        <input type="submit" value="GOOOOOOOOO !!!!" name="test" />
    </form>
    </body>
</html>
<?php
if (isset ($_POST['test'])) 
foreach ($_FILES['fichier']['tmp_name'] as $key => $tmpname){
    if ($_FILES['fichier']['name'][ $key ]!=""){
        // On vérifie le type du fichier
        $ext = pathinfo($_FILES['fichier']['name'][ $key ], PATHINFO_EXTENSION);
        if ($ext != 'png' && $ext != 'jpeg' && $ext != 'JPG' && $ext != 'jpg'){
            $erreur = 'Le fichier doit être au format *.jpeg ou *.png .';
        }
        // Si il y a une erreur on l'affiche sinon on peut uploader
        if(isset($erreur)){
            $msg="" . $erreur . "<br><a href=\"javascript&#058;history.back(1)\">Retour</a>";
        }
        else{    
            $nom_fichier = 'test'.$key.'.'.$ext;
            $repertoire = 'images/'; // Repertoire d'upload
            // On upload le fichier sur le serveur.
            if (move_uploaded_file($tmpname, $repertoire.$nom_fichier)){
                $msg="Votre image à été uploadée sur le serveur avec succes!<br />";
            }
            else{
                $msg="L'image n'a pas pu être uploadée sur le serveur.<br />";
            }
        }
        print $msg;
    }
}
?>
tu devrais regarder cette classe de AB qui permet de la gestion de l'upload (multiple ou non) assez simlpement, elle permet aussi (peut être est ce ton cas au final) de redimensionner les images si on le souhaite).

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 3 Messages

15 juin 2011, 19:30

salut moogli, merci pour ces infos je vais en tenir compte.

J'ai résolu mon problème: mes images étaient trop lourdes et bloquée par une option dans le php.ini.
a++

Petit nouveau ! | 3 Messages

15 juin 2011, 19:39

Au passage, je voulais savoir si tu connaissait une fonction en javascript qui me permettrait de ajouter un champ "parcourir" autant que je voudrais ??? J'ai trouvé des bout de code en javascript sur internet mais rien ne marche et comme je n'y connais rien en javascript ??

Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

16 juin 2011, 12:23

Au passage, je voulais savoir si tu connaissait une fonction en javascript qui me permettrait de ajouter un champ "parcourir" autant que je voudrais ??? J'ai trouvé des bout de code en javascript sur internet mais rien ne marche et comme je n'y connais rien en javascript ??

Merci
regarde la classe de AB, dans le dernier message il indique qu'il a créer ce que tu souhaite.

il y a, avant un petit débat sur l'utilisation de l'option multiple sur les champs de type file en html ;)

@+
Il en faut peu pour être heureux ......