PHP upload de fichier impossible

Bonjour,

Je suis entrain de monter un site et en attendant d'avoir mes accès sur mon hébergeur je fais des essais en local, j'en suis à essayer d'uploader des images.

Voici mon code :

Code :
Sélectionner tout - Visualiser dans une fenêtre à part

$dossier = 'C:/wamp/www/Geckos/Photo/'.$nom.'/';
mkdir($dossier, 0777);
$fichier = basename($_FILES['upfile']['name']);
$taille_maxi = 100000;
$taille = filesize($_FILES['upfile']['tmp_name']);
$extensions = array('.png', '.gif', '.JPG', '.jpeg');
$extension = strrchr($_FILES['upfile']['name'], '.');
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
//On formate le nom du fichier ici...
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);

echo "fichier ".$fichier;
echo "dossier ".$dossier;
echo"fonction ".$_FILES['upfile']['tmp_name']." gggggg ". $dossier . $fichier;
if(move_uploaded_file($_FILES['upfile']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Upload effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';
}
}
else
{
echo $erreur;
}

C'est la dernière partie de code qui ne va pas il semblerait que la fonction move_uploaded_file retourne faux à chaque fois.
Enfin et ça je ne comprend pas pourquoi mais $_FILES['upfile']['tmp_name'] renvoie blanc et je ne sais pas quoi faire voici la partie formulaire

Code :
Sélectionner tout - Visualiser dans une fenêtre à part

echo 'Photo 1 : <input name="upfile" type="file" size="50"><br />';

J'ai bien mis

Code :
Sélectionner tout - Visualiser dans une fenêtre à part

<form method="post" enctype="multipart/form-data" action="...">

Et php.ini

Code :
Sélectionner tout - Visualiser dans une fenêtre à part

;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;

; Whether to allow HTTP file uploads.
; <a href="http://php.net/file-uploads" target="_blank">https://www.php.net/manual-lookup.php?pattern=file-uploads&lang=en&scope=404quickref
file_uploads = On

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
; <a href="https://www.php.net/manual/en/ini.core.php#ini.upload-tmp-dir" target="_blank">https://www.php.net/manual-lookup.php?pattern=upload-tmp-dir&lang=en&scope=404quickref
upload_tmp_dir = "c:/wamp/tmp"

; Maximum allowed size for uploaded files.
; <a href="https://www.php.net/manual/en/ini.core.php#ini.upload-max-filesize" target="_blank">https://www.php.net/manual-lookup.php?pattern=upload-max-filesize&lang=en&scope=404quickref
upload_max_filesize = 10M

Aidez moi svp je tourne en rond depuis quelques heures déja.

Merci d'avance

12 réponses

  1. Bonjour,

    le mkdir fonctionne-t-il ?
    0
    1. Oui il fonstionne très bien
      0
      1. je ne comprend pas pourquoi mais $_FILES['upfile']['tmp_name'] renvoie blanc

        est ce que le repertoire tmp existe bien dans ton repertoire wamp, c'est la que le fichier temporaire est téléchargé avant le move_updated_file(

        autre remarque: ne mets pas C:/wamp/www/Geckos/Photo/'.$nom.'/'

        mais utilises le chemin relatif par rapport à ton script php sinon lorsque tu vas transférer ton code chez ton hébergeur ça ne marchera pas
        0
        1. Pour ce qui du chemin j'utiliserais les chemin relatif la c'était juste pour que ce soit clair pour l'explication de mon problème ici.

          Autrement comment je peux connaitre ce répertoire temporaire vu qu'il est blanc expliquez moi svp.
          0
          1. par ton explorateur windows tu vas sous C:/wamp et la tu devrait avoir un dossier tmp
            0
            1. Oui exacte j'ai bien un répertoire tmp dans C:/wamp avec des sess_...

              Qu'est ce que ca veut dire?
              0
              1. les fichiers sess sont des fichiers de session qui n'ont pas été fermés

                Le fichier temporaire qui est mis ici lors de l'upload est supprimé lorsque c'est fini

                quelle est la taille du fichier que tu essayes d'uploader ?
                0
                1. voilà ou est l'erreur,

                  avec cette methode en php tu ne peux pas uploader de fichier de taille supérieure à 1Mo (1,2 Mo au maxi)

                  c'est limité par la durée d'exécution du script php qui serait trop longue et les hébergeurs n'aiment pas ça

                  j'ai essayé ton script, corrigé un petit bug:

                  if(!file_exists($dossier)){
                  		mkdir($dossier, 0777);
                  	}


                  avec un petit fichier il fonctionne

                  Pour de gros fichiers il faut trouver une autre solution, vas voir JUpload
                  0
                  1. ok je regarde ca demain merci pour votre aide

                    je vous tient au courant
                    0
                    1. J'ai trouvé des endroits ou ils en parle mais pas d'exemple de fonctionnement et d'autrre qui utilise les mêmes fonctions que moi.
                      Auriez vous des liens svp?
                      0
                      1. J'ai besoin d'aide svp je n'avance pas

                        uuuuup
                        0