Upload de fichier

Résolu
Bonjour,

Cela fait depuis hier que j'essaie d'uploader un fichier via PHP mais toujours le même problème, ça ne marche pas. Je ne vois aucune erreur dans mon script PHP ni dans le HTML et donc je pense que le problème est ailleurs. Quelqu'un saurait m'aider svp ?

Je vous mets quand même mes scripts HTML et PHP au cas où.

HTML :

<form action='second.php' method='post' enctype='mutlipart/form-data'> 
 <p>
  <Label for='filetest'>Envoyer votre fichier : </Label>
  <input type='file' name='file'/>
 </p>
  <input type='submit' value='Envoyer'/>
</form>


PHP :

<?php

   // On vérifie si le fichier a été envoyé 

   if (isset($_FILES['filetest']) AND $_FILES['filetest']['error'] == 0)
   {
    // On vérifie que la taille du fichier est inférieure à 8 Mo

    if ($_FILES['filetest']['size'] <= 8000000)
    {
     // On récupère l'extension du fichier 
     
     $infos_fichier = pathinfo($_FILES['filetest']['name']);
     $extension_fichier = infos_fichier['extension'];

     // On vérifie l'extension du fichier

     $extensions_autorisees = array('jpg','jpeg','gif','png');

     if (in_array($extension_fichier, $extensions_autorisees))
     {
      move_uploaded_file($_FILES['filetest']['tmp_name'], 'uploads/'.basename($_FILES['filetest']['name']));

      // On affiche un message pour dire que le fichier a été envoyé

      echo 'Le fichier a bien été envoyé.';
     }
     else
     {
      echo 'ERROR 1';
     }
    }
    else
    {
     echo 'ERROR 2';
    }
   }
   else
   {
    echo 'ERROR 3';
   }

?>


Le script relève toujours l'erreur 3, soit le fichier n'est pas envoyé soit il y a une erreur.

Cordialement et merci d'avance.
N'oubliez pas de mettre le sujet en "résolu" lorsqu'il l'est et un petit "merci" fait toujours plaisir ;-)

4 réponses

  1. Modérateur
    Bonjour,
    name='file'/>
    

    $_FILES['filetest']


    .... normalement.. juste avec ça tu devrais trouver l'erreur.

    1. Merci pour ta réponse.

      Effectivement faute d'inattention mais malheureusement il y a toujours une autre erreur, et quand j'affiche le contenu de $_FILES['filetest'], j'ai une erreur de type "Undefined Index" ... Je comprends vraiment pas et pourtant j'ai même utilisé des scripts déjà faits ( eh oui je me suis mis dans la peau dans script kiddie, j'en suis arrivé la :| ) en changeant les noms de fichiers mais le problème persiste ...
      1. Modérateur
        commence par montrer le code modifié
        Ajoutes y un var_dump de la variable $_FILES et montre nous ce qu'elle contient

        Bien entendu, cette variable n'existe qu'à partir du momment où tu as fais un submit de ton formulaire... le vérifies tu ?
    2. Mes scripts modifiés :

      HTML :

      <!DOCTYPE html>
      <html>
      <head>
      <title>TestUpload</title>
      <meta charset="utf-8">
      </head>
      <body>

      <form action='second.php' method='post' enctype='mutlipart/form-data'>
      <p>
      <Label for='filetest'>Envoyer votre fichier : </Label>
      <input type='file' name='filetest' id='filetest'/>
      </p>
      <input type='submit' value='Envoyer'/>
      </form>

      </body>
      </html>

      PHP :

      <!DOCTYPE html>
      <html>
      <head>
      <title>UploadedFile</title>
      <meta charset="utf-8">
      </head>
      <body>

      <?php

      // On vérifie si le fichier a été envoyé

      if (isset($_FILES['filetest']) AND $_FILES['filetest']['error'] == 0)
      {
      // On vérifie que la taille du fichier est inférieure à 8 Mo

      if ($_FILES['filetest']['size'] <= 8000000)
      {
      // On récupère l'extension du fichier

      $infos_fichier = pathinfo($_FILES['filetest']['name']);
      $extension_fichier = infos_fichier['extension'];

      // On vérifie l'extension du fichier

      $extensions_autorisees = array('jpg','jpeg','gif','png');

      if (in_array($extension_fichier, $extensions_autorisees))
      {
      move_uploaded_file($_FILES['filetest']['tmp_name'], 'uploads/'.basename($_FILES['filetest']['name']));

      // On affiche un message pour dire que le fichier a été envoyé

      echo 'Le fichier a bien été envoyé.';
      }
      else
      {
      echo 'ERROR 1';
      }
      }
      else
      {
      echo 'ERROR 2';
      }
      }
      else
      {
      echo 'ERROR 3';
      var_dump($_FILES);
      }

      ?>

      <p><a href="test.php">Page de login</a></p>

      </body>
      </html>

      Concernant la fonction var_dump($_FILES), elle retourne ''vide'' et j'ai bien un input ''submit'' dans mon script HTML. J'ai l'impression que la liaison entre le script HTML et le script PHP ne se fait pas.
      1. Modérateur
        Bonjour,

        Aucun souci avec ce code
        <!DOCTYPE html>
        <html>
          <head>
            <title>TestUpload</title>
            <meta charset="utf-8">
          </head>
          <body>
        
            <form action="second.php" method="post" enctype="multipart/form-data">
              <p>
              <Label for='filetest'>Envoyer votre fichier : </Label>
              <input type='file' name='filetest' id='filetest' />
              </p>
             <input type='submit' value='Envoyer'/>
            </form>
          </body>
        </html>
        

        Assures toi que tes fichiers sont bien encodés en utf8 sans bom
        (voir chapitre 1 de ce lien : https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8 )

        Penses aussi à bien vider le cache de ton navigateur;

        1. Je te remercie énormément pour tes réponses et la solution est tout autre. Mon anti-virus a disfonctionné et j'ai une quinzaine de virus qui se sont infiltrés sur mon PC. Je viens de finir le nettoyage et mes scripts fonctionnent enfin !
          Encore merci pour ton temps ! ????