Upload de fichier

Résolu
Unnamed_Man Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   -  
Unnamed_Man Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   -
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 38484 Date d'inscription   Statut Modérateur Dernière intervention   4 746
 
Bonjour,
name='file'/>

$_FILES['filetest']


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

0
Unnamed_Man Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   5
 
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 38484 Date d'inscription   Statut Modérateur Dernière intervention   4 746
 
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   Statut Membre Dernière intervention   5
 
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 38484 Date d'inscription   Statut Modérateur Dernière intervention   4 746
 
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   Statut Membre Dernière intervention   5
 
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