Guardar Imagen en MySQL

1,187 views
Skip to first unread message

Arnaldo Toledano

unread,
Aug 15, 2011, 11:52:25 PM8/15/11
to arnaldo....@gmail.com, publice...@googlegroups.com
He logrado guardar una imagen en una tabla de MySql.
En honor a la verdad, creo que he logrado guardar una imagen.
Utilice un columna del tipo LONGBLOG.
Cuando realizo la operación no me manifiesta error, lo que me hace suponer que
lo he grabado.
Este tipo de columna, tiene tres iconos.
Uno de ellos es una lupa, que al hacer click, me muestra un contenido binario y una dato que es
justamente el nombre del archivo JPG.
Pero no logro mostrar la imagen en un reporte.
Cuando pretendo hacerlo, me dice QUE NO ES un campo general.

Alguien tiene idea como puedo mostrar un archivo guardado en una campo LONGBLOG
que aparentemente es una imagen en un REPORTE de VFP ?

Si alguien sabe, pues que me lo haga saber.

Gracias
--
Arnaldo Toledano
Tesys Informática
Córdoba
Argentina

Richard Gaviria

unread,
Aug 16, 2011, 12:05:35 AM8/16/11
to publice...@googlegroups.com
Intenta con esto :

Thisform.Image1.Pictureval=CAST(curtest.foto as BLOB)

Saludos

Rick.



Date: Tue, 16 Aug 2011 00:52:25 -0300
From: arnaldo....@gmail.com
To: arnaldo....@gmail.com; publice...@googlegroups.com
Subject: [vfp] Guardar Imagen en MySQL

Programas ToP

unread,
Aug 16, 2011, 12:33:16 AM8/16/11
to publice...@googlegroups.com
Arnaldo,

    *
    **** GENERA IMAGEN A PARTIR DEL CAMPO DEL CURSOR
    *
    TEMP = "\CARPETA_DE_TRABAJO\" + ALLTRIM(STR(CURSOR_FOTOS.intID,11,0)) + ".JPG"
    *
    STRTOFILE(CURSOR_FOTOS.CD3,TEMP)
    *
    **** COLOCAR LA IMAGEN GENERADA EN EL ARCHIVO EN EL OBJETO PICTURE CORRESPONDIENTE.
    **** EN ESTE CASO LA IMAGEN VA EN UN CONTROL PICTURE DE UN FORMULARIO PERO CON EL DATO DE LA VARIABLE "TEMP" LO PUEDES COLOCAR EN UN INFORME O DONDE QUIERAS, YA ES UN JPG
    *
    CADENA  = "THISFORM.FOTO.Picture"
    &CADENA = TEMP
    *
    **** BORRAR EL ARCHIVO TEMPORAL DE IMAGEN
    *
    RELEASE TEMP
Saludos cordiales

Manuel Tovar Ruiz
Barranquilla - COLOMBIA

Antes de imprimir este correo piensa en la contribución que puedes hacer al medio ambiente.
Please consider your environmental responsibility and commitment before printing.

Walter R. Ojeda Valiente

unread,
Aug 16, 2011, 4:32:47 AM8/16/11
to publice...@googlegroups.com
Hola Arnaldo

Yo no uso MySQL pero te puedo decir como lo hago en Firebird, quizás te pueda dar algunas ideas.

Por ejemplo en la tabla PRODUCTOS.

1. Creo una columna llamad PRD_FOTOGR de tipo BLOB Sub_Type 1 (text). Eso significa que en esa columna puedo guardar cualquier contenido (textos, fotografías, canciones, vídeos, etc.)
2. Guardo en una propiedad de mi formulario (ThisForm.cFotografia) la ruta a la fotografía que deseo almacenar en una tabla, por ejemplo: ThisForm.cFotografia = "C:\Mis Imágenes\Mercedes Benz 350 SE.JPG"
3. Utilizo la función FILETOSTR() para guardar toda la fotografía dentro de una variable. Por ejemplo: M.PRD_FOTOGR = FILETOSTR(ThisForm.cFotografia)
4. Ejecuto el procedimiento almacenado que guarda los datos del producto (incluyendo su fotografía)
     UPDATE OR INSERT INTO PRODUCTOS
                                         (PRD_CODIGO, ..., PRD_FOTOGR)
                              VALUES(:Codigo       , ..., :Fotogr);

Para mostrar la fotografía en el formulario:

1. Inserto un control Imagen en el formulario
2. Obtengo la columna (que es un campo Memo) que contiene la fotografía, por ejemplo: SELECT PRD_FOTOGR FROM PRODUCTOS
3. Con el contenido de ese campo Memo creo una fotografía temporal en el disco duro. Por ejemplo: STRTOFILE(PRD_FOTOGR, "C:\TEMP.JPG")
   a. También podría escribirse: COPY MEMO PRD_FOTOGR TO "C:\TEMP.JPG"
4. Muestro la fotografía, por ejemplo: ThisForm.Image1.Picture = "C:\TEMP.JPG"

NOTAS:
1. En lugar de una columna BLOB Sub_Type 1 (text) cuyo equivalente en Visual FoxPro es un campo Memo también podría usarse una columna BLOB Sub_Type 0 cuyo equivalente en Visual FoxPro es un campo General. Sin embargo, nunca me gustaron los campos de tipo General, por ser aún más problemáticos que los campos Memo, por eso jamás los usé.
2. Si la fotografía puede tener otra extensión (no solamente .JPG sino también .BMP, .TIF, .GIF, etc.) entonces además de la fotografía se debería guardar también o el nombre de esa fotografía o al menos su extensión para que en los pasos 3. y 4. se use la extensión correcta.
3. En lugar de usar la carpeta C:\ es más conveniente usar la carpeta donde el Windows guarda los archivos temporales: GETENV("TEMP")
4. En lugar de usar un nombre fijo (TEMP.JPG) es más conveniente usar un nombre variable, por ejemplo: "K" + SYS(3) + ".JPG"

Saludos.

Walter.




Date: Tue, 16 Aug 2011 00:52:25 -0300
From: arnaldo....@gmail.com
To: arnaldo....@gmail.com; publice...@googlegroups.com
Subject: [vfp] Guardar Imagen en MySQL

almonts ( www.ontarioxb.es )

unread,
Aug 16, 2011, 5:39:32 AM8/16/11
to Comunidad de Visual Foxpro en Español
Mira el articulo publicado por mi en PORTALFOX a ver si te puede
ayudar.

http://www.portalfox.com/index.php?name=News&file=article&sid=2473

Reply all
Reply to author
Forward
0 new messages