Upload de fichier

Résolu/Fermé
Unnamed_Man Messages postés 42 Date d'inscription lundi 5 avril 2021 Statut Membre Dernière intervention 12 juin 2021 - Modifié le 20 avril 2021 à 14:54
Unnamed_Man Messages postés 42 Date d'inscription lundi 5 avril 2021 Statut Membre Dernière intervention 12 juin 2021 - 20 avril 2021 à 20:46
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.
A voir également:

4 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
20 avril 2021 à 18:02
Bonjour,
name='file'/>

$_FILES['filetest']


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

0
Unnamed_Man Messages postés 42 Date d'inscription lundi 5 avril 2021 Statut Membre Dernière intervention 12 juin 2021 5
20 avril 2021 à 18:53
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 ...
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
20 avril 2021 à 18:57
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 ?
0
Unnamed_Man Messages postés 42 Date d'inscription lundi 5 avril 2021 Statut Membre Dernière intervention 12 juin 2021 5
20 avril 2021 à 19:39
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.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
20 avril 2021 à 20:41
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;


0
Unnamed_Man Messages postés 42 Date d'inscription lundi 5 avril 2021 Statut Membre Dernière intervention 12 juin 2021 5
20 avril 2021 à 20:46
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 ! ????
0