Upload de fichier [Résolu]

Signaler
Messages postés
34
Date d'inscription
lundi 5 avril 2021
Statut
Membre
Dernière intervention
20 avril 2021
-
Messages postés
34
Date d'inscription
lundi 5 avril 2021
Statut
Membre
Dernière intervention
20 avril 2021
-
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.

4 réponses

Messages postés
32131
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2021
3 411
Bonjour,
name='file'/>

$_FILES['filetest']


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

Messages postés
34
Date d'inscription
lundi 5 avril 2021
Statut
Membre
Dernière intervention
20 avril 2021
4
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 ...
Messages postés
32131
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2021
3 411
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 ?
Messages postés
34
Date d'inscription
lundi 5 avril 2021
Statut
Membre
Dernière intervention
20 avril 2021
4
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.
Messages postés
32131
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2021
3 411
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://www.commentcamarche.net/faq/47069-html-php-caracteres-accentues-et-l-utf8 )

Penses aussi à bien vider le cache de ton navigateur;


Messages postés
34
Date d'inscription
lundi 5 avril 2021
Statut
Membre
Dernière intervention
20 avril 2021
4
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 ! ????