UpLoad d'un Fichier en PHP
Résolu
lionel-DIL
Messages postés
1222
Date d'inscription
Statut
Membre
Dernière intervention
-
lionel-DIL Messages postés 1222 Date d'inscription Statut Membre Dernière intervention -
lionel-DIL Messages postés 1222 Date d'inscription Statut Membre Dernière intervention -
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 :
Page de reception :
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.
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:
- UpLoad d'un Fichier en PHP
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
4 réponses
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']
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']
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é ?
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é ?
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 ?
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 ?
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'])
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'])
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
par
et cela fonctionne parfaitement.
Je peux donc dire qu'il y a une erreur dans le tuto de CCM ;-)
Merci :-)
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 :-)
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 :-)
Merci pour l'honneur :-)
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 ?