IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Enregistrement et Modification d'un fichier


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 26
    Points : 14
    Points
    14
    Par défaut Enregistrement et Modification d'un fichier
    Bonjour,
    je n'ai pas trouvé de réponse à ma question alors je me suis permis de crée une nouvelle discussion.

    Ma question est donc:
    Est-il possible de modifier le nom d'un fichier upload et qu'il s'enregistre dans un dossier particulier de mon arborescence ? ( en php bien sur )

    ps: je récupère le fichier envoyé par un utilisateur à travers un formulaire

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Tu parles d'un formulaire d'upload ?
    Parce que c'est le cas classique. Tu récupères ton fichier via $_FILES et après vérifications sur ce fichier, tu peux l'enregistrer où tu veux avec le nom que tu veux...

    L'upload de fichiers en HTML et PHP.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Le lien est intéressant mais j'aurais voulu par exemple soit sauvegardé l'image directement dans ma BDD ou alors un moyen de savoir à qui le fichier apparient t-il. Car la méthode ci-dessus me permet de sauvegardé des images mais après à quel profil utilisateur appartiennent t-elles ?

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Personnellement, j'évite de mettre des images dans une base. Je préfère les mettre dans un répertoire et si besoin enregistrer en base l'adresse de l'image.
    Tu peux aussi enregistrer tes images dans des sous dossiers liés à chaque utilisateur, comme ça, tu sais à qui appartiennent les images de chaque sous dossier et tu peux les lister facilement.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Très bien.
    Je vais tenter cette idée là

    Cependant, je n'arrive toujours pas à visualiser ou comprendre comment récupérer l'image que la personne nous a envoyer à travers le formulaire ...
    Je n'arrive à obtenir qu'une chaine de caractère avec $_POST[...].
    Sachant que cette chaine de caractère sera sous Firefox le nom du fichier, et sous IE le nom du fichier + son arborescence mais sans les "/".
    Je ne peux exploiter une chaine de caractère ... :/

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par Bovino
    Tu récupères ton fichier via $_FILES

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Avec $_FILE on peut par la suite enregistrer physiquement le fichier dans un répertoire en indiquant l'emplacement "path" ..? si j'ai bien compris

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Pour aller plus vite, il y a cette classe d'upload qui peut répondre à ces besoins. Elle permet le renommage des fichiers, redimensionnement à la volée, gestion des erreurs, retour des informations de l'image enregistrée, upload multiple etc. ce qui évite beaucoup de travail.

    Eventuellement donc tu pourrais choisir de concaténer le login utilisateur au nom de l'image et d'enregistrer le chemin de l'image dans une bdd. Mais personnellement j'aurais plutôt tendance à favoriser la solution de Bovino qui consiste à utiliser un répertoire par utilisateur car cela facilite l'administration, notamment si on veut lister facilement toutes les images d'un utilisateur.

    Evidemment quelque soit la solution retenue, sauf besoin très particulier, on stocke l'image sur le serveur et uniquement le chemin d'accès dans la bdd.

  9. #9
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Citation Envoyé par ZeWiz Voir le message
    Avec $_FILE on peut par la suite enregistrer physiquement le fichier dans un répertoire en indiquant l'emplacement "path" ..? si j'ai bien compris
    $_FILE permet de télécharger un fichier vers le serveur dans un répertoire temporaire. C'est la fonction move_uploaded_file qui permet ensuite de l'enregistrer dans un répertoire choisi sur le serveur.
    Essaies de voir si la classe en lien dans mon précédent message peut satisfaire à tes besoins, parce sinon en partant de zero, tu auras beaucoup de travail à faire pour arriver à quelque chose d'assez complet.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    J'essaye tout ça et je reviens vers vous si j'ai un soucis ... car c'est vraie que c'est un peu flou encore ^^

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    J'arrive à faire la simple manipulation de "uploader" un fichier lorsque je fais des test mais sa ne cole pas avec mon algortihme ici ...
    Je m'explique:
    Je crée un formulaire (nom, prenom, ID, photo)
    L'utilisateur rempli ces données.
    J'envoie le nom, le prenom et l'ID dans la BDD en MySQL
    Mais pour la photo impossible de l'uploader en lui faisant tenir le nom fichier tel que ID.jpg.
    Regardez plutôt mon code:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <form name="inscription" method="post" action="formulaire.php">
    	 ID: <br />
    	<input type="number" name="id" value="000000" onFocus="if(this.value=='000000')this.value=''" /> <br />
    	Civillité:  <br /><input type="radio" name="civilité" value="Mr"/> Mr 
    	<input type="radio" name="civilité" value="Mme"/> Mme <br/>
    	Nom:  <br />
    	<input type="text" name="nom" />  <br />
    	Prenom:  <br />
    	<input type="text" name="prenom" />  <br />
    	Photo:  <br />
    	<input type="file" name="photo">  <br />
    	<input type="submit" name="valider" value="Valider" />
    </form>
    le formulaire...

    Ensuite mon "isset"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?php
    /* Lorsque l'utilisateur appuie sur OK */
    if ( isset ($_POST['valider'])){
    	$id = $_POST['id'];
    	$civi = $_POST['civilité'];
    	$nom = $_POST['nom'];
    	$prenom = $_POST['prenom']
    	/* On stock dans des variables les données entrées */
    	connectMaBase();
    	 /* On insert dans la base les données */	
    	 $sql = 'INSERT INTO trombinoscope.trombinoscope VALUES("'.$id.'", "'.$civi.'","'.$nom.'","'.$prenom.'")';
    	 /* On check les érreurs */
    	 mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
    	 /* on ferme la connexion */ 
    	mysql_close();
         $dossier = 'MONPATH';
    	 $extension = strrchr($_FILES['avatar']['name'], '.');
         $fichier = $id.$extension;
         if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
         {
              echo 'Upload effectué avec succès !';
         }
         else //Sinon (la fonction renvoie FALSE).
         {
              echo 'Echec de l\'upload !';
         }
    }
    ?>
    La requête SQL marche mais pour l'upload de la photo rien ne se passe ...

  12. #12
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Hum...
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="file" name="photo">
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier))
    Cherchez l'erreur ?

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Whoua ... j'ai corrigé quelque petits détails et ça marche ...
    Pourtant il me semblait avoir déjà tester/effacer le code re-tester et finalement là sa marche ...

  14. #14
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par Celira Voir le message
    Hum...
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="file" name="photo">
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier))
    Cherchez l'erreur ?
    Non das mon vraie code c'était bien avatar à la place de photo.
    L’erreur ne venait pas de là, désolé j'ai pas envoyé le bon code >_<
    Surtout qu'il manquait le "isset" pour $_FILE.
    Du coup quand j'ai corrigé oui sa a marché ...

  15. #15
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 201
    Points : 4 665
    Points
    4 665
    Par défaut
    comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $dossier = 'MONPATH';
    ... $dossier . $fichier ...

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/09/2011, 14h26
  2. [Jena] Enregistrement des modifications dans un fichier OWL
    Par waima dans le forum Frameworks
    Réponses: 1
    Dernier message: 06/07/2010, 14h39
  3. Réponses: 2
    Dernier message: 03/03/2008, 09h38
  4. Est-il possible de détecter la modification d'un fichier ?
    Par Kokito dans le forum API, COM et SDKs
    Réponses: 13
    Dernier message: 25/06/2004, 10h42
  5. [langage] Date de modification d'un fichier
    Par Cyspak dans le forum Langage
    Réponses: 2
    Dernier message: 24/06/2003, 15h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo