[PHP] Enregistrement d'un champ type 'file'
juliekomi
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voici mon code avec commentaires :
fichier d'interface (formulaire où je charge mon fichier type 'file')
fichier de traitement (où je reçois les données du formulaire)
Le problème : on dirait que mon fichier de traitement ne récupère pas la donnée type 'file' et donc on ne rentre pas dans le 'if' qui permet d'enregistrer le fichier.
--
Pouvez vous me dire d'où cela provient?
Merci de votre aide, espérant avoir été claire et pas trop vague. Je suis very novice!
Voici mon code avec commentaires :
fichier d'interface (formulaire où je charge mon fichier type 'file')
<?php // accès direct interdit defined('RACINE') or die('accès direct interdit'); ?> <form action="traitements/inserer.php" method="post" enctype='multipart/form-data'> <table> <tr> <th>Description</th> <td><input type='text' name='description'/></td> </tr> <tr> <th>Photo 1</th> <td><input type='file' name='photo'/></td> </tr> <!--<tr> <td>Photo 2</td> <td><input type='file' name='photo2'/></td> </tr>--> </table> <tr> <td>Pour enregister :</td> <td><INPUT type="submit" value="Click click !"></td> </tr> </form>
fichier de traitement (où je reçois les données du formulaire)
<?php //on definit la constante 'RACINE' : define('RACINE', '../../../'); require(RACINE.'modules/admin/parametres/autorisation_admin.php'); //require(RACINE.'modules/admin/parametres/fonctions.php'); // on récupère les variables crée dans le formulaire if (isset($_FILES["photo"])) $photo=$_FILES["photo"]; else $photo=''; //if (isset($_FILES["photo2"])) $photo2=$_FILES["photo2"]; else $photo2=''; if (isset($_POST ["description"])) $description=$_POST["description"]; else $description=''; //on enregistre la photo sur le serveur si elle existe: if(isset($photo) && is_uploaded_file($photo['tmp_name'])) { //on crée le nom du fichier $photo_name=$photo['name']; //on écrit le fichier sur le serveur $origine=$photo['tmp_name']; $destination=dirname($_SERVER['SCRIPT_FILENAME']).'/../images/'.$photo_name; move_uploaded_file($origine,$destination); } else { $photo_name='visiteur.jpg'; } //on se connecte à la base de données en appelant la connexion: require(RACINE.'parametres/connexion.php'); //on indique la requête SQL désirée: $sql="INSERT INTO colliers(photo,description) VALUES ('$photo_name','$description')"; // ça donne un resultat : mysql_query($sql); //fermeture de la connexion mysql_close($liendb); //on retourne versla page afficher: header("Location:".RACINE."composants/colliers/afficher.php"); echo $sql; ?>
Le problème : on dirait que mon fichier de traitement ne récupère pas la donnée type 'file' et donc on ne rentre pas dans le 'if' qui permet d'enregistrer le fichier.
--
Pouvez vous me dire d'où cela provient?
Merci de votre aide, espérant avoir été claire et pas trop vague. Je suis very novice!
A voir également:
- [PHP] Enregistrement d'un champ type 'file'
- .Bin file - Guide
- Host file - Guide
- .Dat file - Guide
- Iso file - Guide
- File renamer - Télécharger - Gestion de fichiers
11 réponses
oui ce se que je pense si non tu crée un variable $photo=$_FILES["photo"]["name"] et ensuite tu peut just utiliser $photo["name"] ou $photo["tmp_name"], $photo["size"]..
j'ai essayé de mettre $_FILES['photo']['name'] à la place de $_FILES['photo'] mais ça ne marche pas non plus. je ne comprends pas pourquoi le traitement arrive à récupérer le $_POST['description'] et pas le $_FILES['photo'] !
:-(
:-(
Merci scriptiz.
Je suis le tutoriel, comment puis je : "Première chose à faire, vérifier que l'opération s'est bien passée en vérifiant la présence du fichier dans le dossier temporaire; pour cela, nous avons à notre disposition la fonction is_uploaded_file(). " ? Je ne sais pas comment utiliser la fonction pr vérifier?
Je suis le tutoriel, comment puis je : "Première chose à faire, vérifier que l'opération s'est bien passée en vérifiant la présence du fichier dans le dossier temporaire; pour cela, nous avons à notre disposition la fonction is_uploaded_file(). " ? Je ne sais pas comment utiliser la fonction pr vérifier?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Lis le tuto en entier il y a un exemple de code où il montre comment utiliser le is_uploaded_file() plus bas.
En gros lit tout 2-3 fois avant de poser des questions ^^
En gros lit tout 2-3 fois avant de poser des questions ^^
vérifiant la présence du fichier dans le dossier temporaire
tu faire echo $_FILE['photo']['tmp_name']
si le nom s'affiche (.tmp) c'est a dire que le chargement a été bel et bien effectué, si non..
J'ai vérifié, l'upload ne se fait pas. Je ne comprends vraiment pas pourquoi alors que le $_POST passe sans souci!
qqs commentaires et rectifssur une partie de ton code:
// on récupère les variables crée dans le formulaire if (isset($_FILES["photo"])) $photo=$_FILES["photo"]; else $photo=''; //if (isset($_FILES["photo2"])) $photo2=$_FILES["photo2"]; else $photo2=''; if (isset($_POST ["description"])) $description=$_POST["description"]; else $description=''; //on enregistre la photo sur le serveur si elle existe: ///////if(isset($photo) && is_uploaded_file($photo['tmp_name'])) //la tu testes si la variable $photo existe hors elle existe dans tous les cas puisque 3 lignes plus haut tu lui donnes une valeur par defaut même si $_FILES n'existe pas //donc mets plutot: if($photo!='' && is_uploaded_file($photo['tmp_name'])) { //on crée le nom du fichier $photo_name=$photo['name']; //on écrit le fichier sur le serveur $origine=$photo['tmp_name']; $destination=dirname($_SERVER['SCRIPT_FILENAME']).'/../images/'.$photo_name; ////// move_uploaded_file($origine,$destination); //la d'ou vient $destination ? move_uploaded_file($origine,$photo_name); } else { $photo_name='visiteur.jpg'; //la je ne vois pas ce que tu en fait après }
alain_42, merci de prendre le temps de me lire !
donc le $destination est défini ici :
et après je dis que si le $photo existe pas et qu'il est pas uploadé dans le 'tmp_name' alors je l'appelle visiteur.jpg.
je sais pas si c'est très clair, je ne fais que recopier ce qu'on m'apprend en cours.
donc le $destination est défini ici :
$destination=dirname($_SERVER['SCRIPT_FILENAME']).'/../images/'.$photo_name;
et après je dis que si le $photo existe pas et qu'il est pas uploadé dans le 'tmp_name' alors je l'appelle visiteur.jpg.
je sais pas si c'est très clair, je ne fais que recopier ce qu'on m'apprend en cours.
houps excuses j'avais pas vu $destination deux lignes au dessus
mais la variable $phot_name chargée par défaut plus bas ne sera pas prises en compte dans $destination
mais la variable $phot_name chargée par défaut plus bas ne sera pas prises en compte dans $destination
Je t'invite à suivre ce tutoriel :
http://phpcodeur.net/articles/php/upload
Ainsi tu auras tous les détails pour réussir ton upload.
http://phpcodeur.net/articles/php/upload
Ainsi tu auras tous les détails pour réussir ton upload.