Stocker des images dans une base MySQL, HELP !!!!!!!

Publié : 03.01.2005 - 16h43 par P2M

Tout d'abord je vous souhaite une très bonne année 2005 à tous.....

Bon voilà j'ai besoin d'aide pour des accès à MySQL via Revolution.
En fait j'arrive à mes fins pour la majorité de mes besoins et j'arrive à stocker et récupérer mes infos dans ma base MySQL sans problème.

Mais là je but car je voudrais stocker des images dans ma base. Je pense que je ne sais pas trop qu'elle est la bonne méthode.

Voilà ce que j'ai fait et qui marche de façon aléatoire (d'où mon problème), en fait que pour des images faisant moins de 48 K.

Je sais qu'il y a une limite à 63K quand on fait des requêtes avec revolution, mais là une image qui fait 49k ne passe pas.

ENREGISTREMENT d'une image

1/ j'importe une image jpeg depuis un fichier .jpg dans un objet image d'une card.
=> put URL ("binfile:"&it) into image "fullsize"

2/ Puis je prend le contenu de cet objet image et je l'encode.
=>put image "fullsize" into varImage
=>put Base64encode(varImage) into varImage

3/ J'enregistre les données dans la base MySQL
=>revExecuteSQL idDB,"INSERT INTO medias (med_data) VALUES ('"&varImage&"')"

RECUPERATION d'une image

1/ Je sélectionne et récupère les infos de l'enregistrement dans la table medias
=>get revDataFromQuery(,,idDB,"SELECT med_data FROM medias WHERE id_med='1'")

2/ je décode les info
put Base64decode(it) into medData

3/ j'affiche l'image
=> put medData into image "vignette"

Bon après avoir lu la doc, je devrais avoir plutôt ceci :

- un champs BLOB dans ma base MySQL à la place d'un champs TEXT
- ne transférer et ne stocker que des données BINARY
- utiliser les fonction revDatabaseQueryBLOB pour ne pas être limité en taille de donnée (64k)

Et c'est là que je n'arrive à rien du tout :-(

je n'arrive pas à saisir cette fonction revDatabaseQueryBLOB. Elle permet uniquement de faire un sélection dans la bse et de récupérer un pointeur n'est ce pas. Mais après les données de l'enregistrement je les récupère comment ? quelle fonction me permet de récupérer mon champs med_data dans ma table ?

Bref, j'ai besoin de pouvoir enregistrer des images jpeg dans ma base MySQL et si quelqu'un pouvait me donner la bonne marche à suivre ce serait génial, c'est très important, merci d'avance....

Philippe


Publié : 03.01.2005 - 21h12 par Jérôme Rosat

Bonjour,

Voici ce qui fonctionne parfaitement chez moi:

J'ai une carte qui permet de sélectionner une image et qui contient un bouton "Ajouter" dont voici le script:

on mouseUp
if the filename of image "icone" is empty then
beep
answer warning "Vous devez séletionner une image"
else
export image "icone" to vImage as PNG
put revOpenDatabase("MySQL",,"ma_base",,) into myDB
revExecuteSQL myDB,"INSERT INTO ma_table (ico_c_valeur) VALUES (:1)","*b" & "vImage"
revCloseDatabase myDB
end if
end mouseUp

Voici un extrait du script de ma deuxième carte qui affiche une image de la base MySQL:

put revOpenDatabase("MySQL",,"ma_base",,) into myDB
put revQueryDatabase(myDB,"SELECT * FROM ma_table ORDER BY ICO_N_NUMERO") into rAllImages
revMoveToFirstRecord rAllImages -- ici je me déplace vers le premier enregistrement de mon "recordset".
put revDatabaseColumnNamed(rAllImages,"ICO_N_NUMERO") into vNumero
put revDatabaseColumnNamed(rAllImages,"ICO_C_NOM") into vNom
get revDatabaseColumnNamed(rAllImages,"ICO_C_VALEUR","vImage") -- Attention, pour les champs Blob, il faut utiliser la forme "get" de la fonction revDatabaseColumnNamed (cf. la doc de revolution qui n'est pas très claire sur cette question.
put vNumero&"."&&vNom into field "fText"
put vImage into image "icone"

Meilleurs messages.

Jérôme


Publié : 04.01.2005 - 0h05 par Invité

merci pour ces infos je vais voir cela en détail car effectivement je n'utilise jamais le revDatabaseColumnNamed.

Je te tiens au courant

Merci encore


Publié : 13.02.2006 - 15h27 par imikado

Juste une question: l'interet ?
En general on upload l'image dans un repertoire defini, et on enregistre en BDD sa source

Sur certains CMS, ils creait une entree en base pour chaque image pour qu'on puisse linké une reference image et non un nom definit d'image
L'avantage: on passe l'image de gif a jpeg ou png, il faut pas changer la source sur toutes les entrées y referant mais juste la source de l'entrée de l'image ;)


Re: Stocker des images dans une base MySQL, HELP !!!!!!!

Publié : 03.12.2014 - 8h44 par Fedral144

Plus que quelques heures pour aider à financer Livecode afin qu'il passe en open source.