UpLoad d'un Fichier en PHP

Résolu/Fermé
lionel-DIL Messages postés 1222 Date d'inscription lundi 25 juin 2012 Statut Membre Dernière intervention 7 août 2014 - 3 juil. 2012 à 12:34
lionel-DIL Messages postés 1222 Date d'inscription lundi 25 juin 2012 Statut Membre Dernière intervention 7 août 2014 - 3 juil. 2012 à 15:07
Bonjour,

Je dois faire un upload de fichier en PHP.
J'ai suivis plusieurs tutos, tous sans succès.
( https://antoine-herault.developpez.com/tutoriels/php/upload/#L3.3 ) mais plus récemment celui-ci :
https://www.commentcamarche.net/faq/889-php-upload-de-fichiers

Voici mon code ( ce n'est qu'un copié collé/adapté, mais il ne fonctionne pas, je me casse la tête depuis des jours). Je précise que file_uploads est activé.


Page de choix de fichier :
<form method="post" action="reception.php" enctype="multipart/form-data">    
          <input type="hidden" name="MAX_FILE_SIZE" value="2097152">    
          <input type="file" name="nom_du_fichier">   
          <input type="submit" value="Envoyer">   
</form>


Page de reception :
<?php          
if ($_FILES['nom_du_fichier']['error']) {    
          switch ($_FILES['nom_du_fichier']['error']){    
                   case 1: // UPLOAD_ERR_INI_SIZE    
                   echo"Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !";    
                   break;    
                   case 2: // UPLOAD_ERR_FORM_SIZE    
                   echo "Le fichier dépasse la limite autorisée dans le formulaire HTML !";
                   break;    
                   case 3: // UPLOAD_ERR_PARTIAL    
                   echo "L'envoi du fichier a été interrompu pendant le transfert !";    
                   break;    
                   case 4: // UPLOAD_ERR_NO_FILE    
                   echo "Le fichier que vous avez envoyé a une taille nulle !";
                   break;    
          }    
}    
else {    
 // $_FILES['nom_du_fichier']['error'] vaut 0 soit UPLOAD_ERR_OK    
 // ce qui signifie qu'il n'y a eu aucune erreur
 echo 'erreur';
}    


if ((isset($_FILES['nom_du_fichier']['fichier'])&&($_FILES['nom_du_fichier']['error'] == UPLOAD_ERR_OK))) {    
$chemin_destination = '/mondossier/uploads/';    
move_uploaded_file($_FILES['nom_du_fichier']['tmp_name'], $chemin_destination.$_FILES['nom_du_fichier']['name']);    
}
else {
    echo 'erreur 2';
}
?> 

Le serveur me renvoit toujours erreur1 et erreur 2.
Donc il ne reconnait pas le fichier ( j'en ai testé plusieurs).

Quelqu'un voit l'erreur ?

Merci d'avance.

L.
A voir également:

4 réponses

Utilisateur anonyme
3 juil. 2012 à 13:27
Si j'en crois ton script, il n'affiche pas erreur1 mais erreur, car je ne vois pas de message "erreur1"
C'est bon signe, car tu affiches ça si ça va bien... C'est curieux, comme message, pour dire que ça va bien.

Quant à l'erreur2, c'est normal aussi. Tu testes isset($_FILES['nom_du_fichier']['fichier']) mais il n'y a aucun élément ['fichier'] dans $_FILES['nom_du_fichier']. Il y a ['name'], ['tmp_name'], ['error'], etc... mais pas ['fichier']
0
lionel-DIL Messages postés 1222 Date d'inscription lundi 25 juin 2012 Statut Membre Dernière intervention 7 août 2014 1 768
3 juil. 2012 à 14:05
Oui, 'erreur' pas 'erreur1' désolé^^.
C'est juste pour dire que le script ne s'arrête pas là; si je le vois, c'est ok ( je le retire après).
Donc le script sur cette page est faux ?
0
La condition ci-dessous ne sera jamais vraie.
isset($_FILES['nom_du_fichier']['fichier'])

En revanche, la condition ci-dessous peut être utilisée :
isset($_FILES['nom_du_fichier']['tmp_name'])

Attention toutefois : souhaite-t-on écraser un précédent fichier s'il a le même nom que le nouveau fichier téléchargé ?
0
lionel-DIL Messages postés 1222 Date d'inscription lundi 25 juin 2012 Statut Membre Dernière intervention 7 août 2014 1 768
3 juil. 2012 à 14:10
C'est la première fois que j'utilise l'upload en PHP (je crois que ça se voit).

Tu testes isset($_FILES['nom_du_fichier']['fichier']) mais il n'y a aucun élément ['fichier'] dans $_FILES['nom_du_fichier']. Il y a ['name'], ['tmp_name'], ['error'], etc... mais pas ['fichier']

Qu'est ce que ['fichier'] dans le script ?
0
Utilisateur anonyme
3 juil. 2012 à 14:28
Qu'est ce que ['fichier'] dans le script ?
Tu poses cette question, mais ce serait plutôt à nous de te la poser, c'est toi qui l'as écrit, ce 'fichier'. Et justement, il n'existe pas. Donc, comme nous te l'avons dit A.Nonymous et moi, le test isset($_FILES['nom_du_fichier']['fichier']) va toujours te rendre false.
Suis le conseil de A.Nonymous, et remplace ce test d'existence par le test de quelque chose qui existe vraiment, comme isset($_FILES['nom_du_fichier']['tmp_name'])
0
lionel-DIL Messages postés 1222 Date d'inscription lundi 25 juin 2012 Statut Membre Dernière intervention 7 août 2014 1 768
3 juil. 2012 à 14:35
c'est toi qui l'as écrit, ce 'fichier'.
Non non, je l'ai copié d'ici, j'arrête pas de le dire :P

C'est parfait.
Je viens de corriger
isset($_FILES['nom_du_fichier']['fichier']) 

par
if ((isset($_FILES['nom_du_fichier']['tmp_name'])

et cela fonctionne parfaitement.

Je peux donc dire qu'il y a une erreur dans le tuto de CCM ;-)

Merci :-)
0
Utilisateur anonyme
3 juil. 2012 à 14:52
j'arrête pas de le dire :P
Excuse-moi. Tu as bien fait de le répéter, j'avoue que je n'y avais pas fait attention.
Bonne continuation
0
lionel-DIL Messages postés 1222 Date d'inscription lundi 25 juin 2012 Statut Membre Dernière intervention 7 août 2014 1 768
3 juil. 2012 à 14:54
PAs de soucis, merci encore ;-)

(paraît que tu es mis à l'honneur ici ... ;-) ).
0
Utilisateur anonyme
3 juil. 2012 à 15:05
Nous avons eu la même idée. Mais au lieu de créer un nouveau fil, je l'ai mis dans un fil consacré aux erreurs:

Merci pour l'honneur :-)
0
lionel-DIL Messages postés 1222 Date d'inscription lundi 25 juin 2012 Statut Membre Dernière intervention 7 août 2014 1 768
3 juil. 2012 à 15:07
Ah. Je ne connaissais pas ce fil ( que je suis désormais).

Thanks ;-)
0