Uploader un fichier depuis un formulaire
Résolu
jourdanne85
Messages postés
27
Date d'inscription
Statut
Membre
Dernière intervention
-
Smoking bird Messages postés 870 Date d'inscription Statut Membre Dernière intervention -
Smoking bird Messages postés 870 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je veux créer un formulaire où le visiteur du site pourra joindre un fichier qui sera envoyé sur un dossier du serveur de mon site.
Pour l'instant, je fais un essai sur mon propre PC où j'ai installé WAMP Server.
J'essaye donc d'envoyer le fichier après vérification dans le dossier "images/" qui se situe au même niveau que mon fichier php.
Voici le code de mon formulaire :
Voici le code de mon fichier "cible_essai.php" :
Le problème est que lorsque je joins un fichier, le navigateur lance le fichier "cible_essai.php" mais rien ne se passe.
Merci donc de me dire où je me trompe.
Je veux créer un formulaire où le visiteur du site pourra joindre un fichier qui sera envoyé sur un dossier du serveur de mon site.
Pour l'instant, je fais un essai sur mon propre PC où j'ai installé WAMP Server.
J'essaye donc d'envoyer le fichier après vérification dans le dossier "images/" qui se situe au même niveau que mon fichier php.
Voici le code de mon formulaire :
<form action="cible_essai.php" method="post" enctype="multipart/form-data"> <p> Voici le formulaire d'envoi de fichier :<br/> <input type="file" name="monfichier" /><br/> <input type="submit" value="Joindre" /> </p> </form>
Voici le code de mon fichier "cible_essai.php" :
<?php if(isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0) { if ($_FILES['monfichier']['size'] <= 1000000) { $infosfichier = pathinfo($_FILES['monfichier']['name']); $extension_upload = $infosfichier['extension']; $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png'); if (in_array($extensions_upload, $extensions_autorisees)) { move_uploaded_file($_FILES['monfichier']['tmp_name'], 'images/' .basename($_FILES['monfichier']['name'])); echo "L'envoi a bien été effectué !"; } } } ?>
Le problème est que lorsque je joins un fichier, le navigateur lance le fichier "cible_essai.php" mais rien ne se passe.
Merci donc de me dire où je me trompe.
A voir également:
- Uploader un fichier depuis un formulaire
- Whatsapp formulaire opposition - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier bin - Guide
- Fichier rar - Guide
13 réponses
Je viens de faire l'essai en rajouter dans le fichier "cible_essai.php" :
echo $_FILES['monfichier']['error'];
Le navigateur indique maintenant la valeur 0.
Ce qui signifie que le fichier a bien été envoyé.
Le problème est que le fichier joint ne se trouve pas dans le dossier "images/" et que
la page n'affiche pas "L'envoi a bien été effectué".
Il doit y avoir une erreur dans le code plus bas ?
echo $_FILES['monfichier']['error'];
Le navigateur indique maintenant la valeur 0.
Ce qui signifie que le fichier a bien été envoyé.
Le problème est que le fichier joint ne se trouve pas dans le dossier "images/" et que
la page n'affiche pas "L'envoi a bien été effectué".
Il doit y avoir une erreur dans le code plus bas ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
retire la propriété basename là:
move_uploaded_file($_FILES['monfichier']['tmp_name'], 'images/' .basename($_FILES['monfichier']['name']));
move_uploaded_file($_FILES['monfichier']['tmp_name'], 'images/' .basename($_FILES['monfichier']['name']));
Je viens d'essayer :
Si j'enlève : .basename : le navigateur affiche :
Parse error: syntax error, unexpected '(' in C:\Program Files\wamp\www\tests\cible_essai.php on line 13
Si je n'enlève que basename : le navigateur affiche : 0 comme précédemment.
Celà ne doit pas venir de là.
Il y a peut-être des droits à ouvrir pour que PHP puisse mettre le fichier dans le dossier "images/" ?
Si j'enlève : .basename : le navigateur affiche :
Parse error: syntax error, unexpected '(' in C:\Program Files\wamp\www\tests\cible_essai.php on line 13
Si je n'enlève que basename : le navigateur affiche : 0 comme précédemment.
Celà ne doit pas venir de là.
Il y a peut-être des droits à ouvrir pour que PHP puisse mettre le fichier dans le dossier "images/" ?
le chmod doit se faire après l'upload pour les fichiers, mais il vaut mieux vérifier les droits de ton dossier^^
<?php
if(isset($_FILES['monfichier']['tmp']) AND $_FILES['monfichier']['error'] == 0)
{
//if ($_FILES['monfichier']['size'] <= 1000000) {
//$infosfichier = pathinfo($_FILES['monfichier']['name']);
//$extension_upload = $infosfichier['extension'];
//$extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
//if (in_array($extensions_upload, $extensions_autorisees))
//{
move_uploaded_file($_FILES['monfichier']['tmp_name'], 'images/' .basename($_FILES['monfichier']['name']));
echo "L'envoi a bien été effectué !";
//}
//}
}
?>
voit avec ça, ça nous permettra de définir si ta commande move est correcte^^
<?php
if(isset($_FILES['monfichier']['tmp']) AND $_FILES['monfichier']['error'] == 0)
{
//if ($_FILES['monfichier']['size'] <= 1000000) {
//$infosfichier = pathinfo($_FILES['monfichier']['name']);
//$extension_upload = $infosfichier['extension'];
//$extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
//if (in_array($extensions_upload, $extensions_autorisees))
//{
move_uploaded_file($_FILES['monfichier']['tmp_name'], 'images/' .basename($_FILES['monfichier']['name']));
echo "L'envoi a bien été effectué !";
//}
//}
}
?>
voit avec ça, ça nous permettra de définir si ta commande move est correcte^^
Je viens un test en rajoutant des "else" pour chaque conditions dans mon code.
Je trouve donc une erreur dès le départ à la ligne :
Vu que j'arrive à avoir une valeur 0 lorsque je fais un echo de $_FILES['monfichier']['error'], l'erreur ne peut
venir que de $_FILES['monfichier']['tmp']
Il y peut-être un manip à faire quand on veut le faire en local ?
Je trouve donc une erreur dès le départ à la ligne :
if(isset($_FILES['monfichier']['tmp']) AND $_FILES['monfichier']['error'] == 0)
Vu que j'arrive à avoir une valeur 0 lorsque je fais un echo de $_FILES['monfichier']['error'], l'erreur ne peut
venir que de $_FILES['monfichier']['tmp']
Il y peut-être un manip à faire quand on veut le faire en local ?
Je viens de faire un autre essai mais en mettant les fichiers en ligne.
L'erreur vient maintenant de l'extension.
Le fichier arrive donc à passer les 2 premières conditions mais pas la 3ème.
Il y a donc une manip à faire en local si l'on veut travailler sur son pc.
Par contre, si je vuex mettre mon fichier en ligne, j'ai toujours le problème de l'extension.
L'erreur vient maintenant de l'extension.
Le fichier arrive donc à passer les 2 premières conditions mais pas la 3ème.
Il y a donc une manip à faire en local si l'on veut travailler sur son pc.
Par contre, si je vuex mettre mon fichier en ligne, j'ai toujours le problème de l'extension.
if(isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0 )
{
if ( $_FILES['monfichier']['size'] <= 1000000 ) {
$infosfichier = pathinfo($_FILES['monfichier']['name']);
$ext = $infosfichier['extension'];
$extAuth = array('jpg', 'jpeg', 'gif', 'png');
if ( in_array($ext, $extAuth) ) {
move_uploaded_file($_FILES['monfichier']['tmp_name'], 'images/' .basename($_FILES['monfichier']['name']));
echo "L'envoi a bien été effectué !";
}
}
}
ça fonctionne. C'était un problème de nom de variables, le s de la variable qui stocke l'extension du fichier, dans le if, est en trop. Je te recommande de les raccourcir pour ne pas te planter^^
{
if ( $_FILES['monfichier']['size'] <= 1000000 ) {
$infosfichier = pathinfo($_FILES['monfichier']['name']);
$ext = $infosfichier['extension'];
$extAuth = array('jpg', 'jpeg', 'gif', 'png');
if ( in_array($ext, $extAuth) ) {
move_uploaded_file($_FILES['monfichier']['tmp_name'], 'images/' .basename($_FILES['monfichier']['name']));
echo "L'envoi a bien été effectué !";
}
}
}
ça fonctionne. C'était un problème de nom de variables, le s de la variable qui stocke l'extension du fichier, dans le if, est en trop. Je te recommande de les raccourcir pour ne pas te planter^^