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

Requêtes MySQL Discussion :

intégrer un fichier image dans une base de donnée?


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 15
    Points : 8
    Points
    8
    Par défaut [Résolu]intégrer un fichier image dans une base de donnée?
    j'aimerais que l'utilisateur de mon site puisse enregistrer une de ses images(avec le bouton 'Parcourir') dans ma base de donnée à l'aide de mysql je suppose. C'est un INSERT?
    Et est-il possible de vérifier la taille du fichier enregistrer (ne pas enregistrer dans la base une image trop volumineuse?

    Merci d'avance
    Lody

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 22
    Points : 17
    Points
    17
    Par défaut
    bin tu peux pas.
    ce que tu peux faire c'est utiliser un script php pour uploader son fichier par ftp sur ton site et stocker le lien dans une bvase mysql...

    script d'upload par ftp : ftp_upload
    http://matt.phptest.free.fr/php-upload_to_my_ftp/

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    c'est gentil mais ton lien ne marche pas...

    Lody

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 22
    Points : 17
    Points
    17
    Par défaut
    t gentil mais je vais pas tout faire non plus :

    http://www.google.fr/search?q=%22php-upload+to+my+ftp%22

  5. #5
    Membre confirmé
    Avatar de omiossec
    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2002
    Messages : 241
    Points : 563
    Points
    563
    Par défaut
    Dans un champs de type blob il est toujours possible d'insert des fichiers binaires.
    Pour ce faire il faut que le fichier soit sur la même machine que le serveur mysql et que l'utilisateur a le privilege file.
    Ensuite c'est une requete presque classique de mise à jour d'une table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     UPDATE nomtable
     SET chmp_blob=LOAD_FILE("/pathto/moi.jpg")
     WHERE id=1
    Olivier Miossec

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Mars 2003
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    J'avais un problème semblable et j'ai réussi à placer mes fichiers images dans la BD. Mais voilà, je suis incapable d'aller les chercher et de les afficher. Je suis sûr que c'est aussi simple que l'insertion mais je ne trouve pas. Ou je ne cherche pas à la bonne place. Maudits débutants!

    Citation Envoyé par omiossec
    Dans un champs de type blob il est toujours possible d'insert des fichiers binaires.
    Pour ce faire il faut que le fichier soit sur la même machine que le serveur mysql et que l'utilisateur a le privilege file.
    Ensuite c'est une requete presque classique de mise à jour d'une table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     UPDATE nomtable
     SET chmp_blob=LOAD_FILE("/pathto/moi.jpg")
     WHERE id=1

  7. #7
    Membre confirmé
    Avatar de omiossec
    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2002
    Messages : 241
    Points : 563
    Points
    563
    Par défaut
    Quel langage utilise tu ?
    Olivier Miossec

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 59
    Points : 41
    Points
    41
    Par défaut
    J'ai fait un cours la dessus mais comme je me suis fait taper sur les doigts par un modo je vous donnerai pas mon lien na!

    Mais je peux afficher le cours ici, c'est pas grave (bon y a pas enormement d'explications, alors il faut suivre...)

    Images & MySQL



    Attention !!! Ce genre de procédé est très lourd pour une base de données. Mais cela peut avoir certains avantages, c'est vrai. Bon allez je me lance...

    Déjà il vous faut un script (appelons-le "afficher_image") du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
    header('content-type: image/gif');
    readfile('/chemin/vers/les/images/image.gif'); 
    ?>
    (pour content type : référez vous au cours sur la génération d'images )

    que l'on appelle au moyen de l'instruction HTML:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img src="afficher_image.php">
    Pour explication, le fichier afficher_image.php équivaut à une image gif.

    Il nous faut créer une base (nous l'appellerons "essai") et une table (nous l'appellerons "images_binaires") qui comprendra les champs suivants: id (un entier), donnees_binaires (type MySQL LONGBLOB), nom_fichier (une chaîne), taille_fichier (une chaîne), type_fichier (une chaîne), et, éventuellement, un champ description (une chaîne). On n'oubliera pas de préciser "auto_increment" pour l'identifiant. Nous allons insérer les images dans la base à l'aide, par exemple, d'un formulaire HTML. Il ressemblera à:



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <form method="post" action="inserer_image.php" enctype="multipart/form-data">
    Nom du fichier:&<input type="file" name="image" size="40">
    <br><input type="submit" name="ok">
    </form>
    Jusqu'à la pas de problème ? je continue alors :

    Notre programme inserer_image.php sera alors le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    mysql_connect("","root","");
    mysql_select_db("essai");
    $donnees = addslashes(fread(fopen($image, "r"), filesize($image)));
    $result=mysql_query("INSERT INTO images_binaires (donnees_binaires,nom_fichier,taille_fichier,type_fichier) VALUES ('$donnees','$image_name','$image_size','$image_type')");
    $id= mysql_insert_id();
    print "<br>Indentifiant du fichier dans la base: $id<br>";
    mysql_close();
    ?>


    Bon pas grand chose à expliquer ici non plus a par peut-être la fonction addslashes() qui ajoute des antislashs devant les caractères (',",\,NUL). et pour fread() et fopen() revoir les cours sur la gestion des fichiers.

    Un petit programme php, afficher_image.php, va permettre de récupérer l'image dans la base:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    mysql_connect("","root","");
    mysql_select_db("essai");
    $requete = "SELECT donnees_binaires,type_fichier FROM images_binaires WHERE id=$id";
    $resultat = mysql_query($requete);
    $donnees = mysql_result($resultat,images_binaires.donnees_binaires);
    $type = mysql_result($resultat,0,images_binaires.type_fichier);
    header( "content-type: $type");
    echo $donnees;
    ?>
    La non plus rien de spécial, et puis voila c'est fini !


    On appellera ce programme avec une instruction HTML du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img src="afficher_image.php"?id=identifiant>
    où l'on précisera l'identifiant correspondant.

  9. #9
    Membre du Club Avatar de Cygnus Saint
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 66
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par omiossec
    LOAD_FILE
    Peut on utiliser " LOAD_FILE " sur un site perso de chez free ? J'essaie mais il me répond:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #1045 - Access denied for user 'mon_nom_de_user '@'212.27.63.202' (using password: YES)
    J'essaie pourtant depuis phpMyAdmin.

  10. #10
    mmz
    mmz est déconnecté
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 107
    Points : 100
    Points
    100
    Par défaut Re: [Résolu]intégrer un fichier image dans une base de donné
    En réponse à :

    Citation Envoyé par Lody
    j'aimerais que l'utilisateur de mon site puisse enregistrer une de ses images(avec le bouton 'Parcourir') dans ma base de donnée à l'aide de mysql je suppose. C'est un INSERT?
    Et est-il possible de vérifier la taille du fichier enregistrer (ne pas enregistrer dans la base une image trop volumineuse?

    Merci d'avance
    Lody
    Tu peux utiliser le bouton parcourir(<input type=file>) dans le formulaire pour uploader l'image et aprés tu peux copier le fichier dans un répertoire sur le serveur et mettre le chemin dans un champ de ta base de données

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. intégrer les données d'un fichier XML dans une base de données Oracle 11
    Par pmboutteau dans le forum Persistance des données
    Réponses: 2
    Dernier message: 07/03/2014, 09h55
  2. Réponses: 3
    Dernier message: 07/05/2013, 11h39
  3. Enregistremenbt d'un fichier WORD dans une base de données
    Par yam49 dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/08/2004, 15h01
  4. inserer des images dans une base de données
    Par alilou04 dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/06/2004, 18h54
  5. les images dans une base de données
    Par houhou dans le forum Bases de données
    Réponses: 8
    Dernier message: 22/06/2004, 14h27

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