Manejo de Imagenes con Mysql y Fox

818 views
Skip to first unread message

GETIANG

unread,
Jun 7, 2013, 6:35:46 PM6/7/13
to publice...@googlegroups.com
Buenas tardes foro...!

Este tema ha sido muy renombrado en el foro, he leído y revisado, pero hasta ahora no he podido logar que me muestre las fotos guardadas en Mysql - tengo este procedimiento del Sr.

Richard Gaviria 
27/10/11
Cargar Imagen :
rgl=GETFILE()
Thisform.Image1.Picture=rgl

Grabar
abx=FILETOSTR(rgl)
=SQLEXEC(gnConn,'INSERT INTO TEST (foto) values (?abx)')

Recuperar de campo Blob (NO ME FUNCIONA)
=SQLEXEC(gnConn,'select * from test','curtest')
Thisform.Image1.Pictureval=CAST(curtest.foto as BLOB)

Cabe destacar que tengo CursorSetProp("MapBinary", .T. , 0) definido para que el cursor me tome campo tipo Blob

He leído en muchos hilos que aquí en este punto es donde da problemas

Quien me puede ayudar

De antemano Gracias


Irwin Rodriguez

unread,
Jun 7, 2013, 11:17:08 PM6/7/13
to publice...@googlegroups.com

Te voy a enviar un ejemplo de como lo manejo.

Saludos!!

Carlos Salcedo

unread,
Jun 8, 2013, 8:52:08 AM6/8/13
to visual fox, get...@cantv.net
Hola buenos dias

Te agradezco la gentileza y me lo envíes también a mi

Saludos
Carlos


Date: Fri, 7 Jun 2013 22:47:08 -0430
Subject: Re: [vfp] Manejo de Imagenes con Mysql y Fox
From: rodrigu...@gmail.com
To: publice...@googlegroups.com

Alfonso Ramirez Diaz

unread,
Jun 8, 2013, 11:06:06 AM6/8/13
to publice...@googlegroups.com
Yo lo hago de esta manera.

Lo primero es que uso un campo MEDIUMTEXT o LONGTEXT en MYSQL en SQL SERVER es TEXT

Por ejemplo si la tabla tiene la siguiente estructura :

imagenes ( archivo CHAR(100), imagen MEDIUMTEXT )

1.- Para grabar la imagen sería:

MiArchivo = GETPICT()       && GETFILE() también sirve
MiString = STRCONV(FILETOSTR(MiArchivo),13)
MiArchivo = JUSTFNAME(MiArchivo)
SQLEXEC(lnHandle,"INSERT INTO imagenes ( archivo, imagen ) VALUES ( ?MiArchivo, ?MiString )"
RELEASE MiString

2.- Para recuperar la imagen sería:

SQLEXEC(lnHandle,"SELECT archivo, imagen FROM imagenes","consulta")
MiString = STRCONV(consulta.imagen,14)
MiArchivo = ALLTRIM(consulta.archivo)
STRTOFILE(MiString,MiArchivo)
RELEASE MiString

El STRCONV es solo para codificar en BASE64 y no tener caracteres extraños al momento de guardar en MYSQL o cualquier motor SQL

Este procedimiento te sirve para guardar y recuperar cualquier tipo de archivo, ya sean imagenes, Word, Excel, Pdf, etc.

GETIANG

unread,
Jun 8, 2013, 12:08:08 PM6/8/13
to publice...@googlegroups.com
Gracias por tu colaboración, adapte tu codificación y me resulto perfecto - Muchas Gracias...!

Peroooo siempre el peroo.....  Resulta que tengo una Barra de Navegación de Registros y cuando se necesita mostrar la siguiente imagen, me muestra la misma, es decir no substituye la varaiable MiString a pesar de que se libera el MiString.

Mi preceso lo adapte asi...!

SELECT TmpEmpleados

LOCAL camino_imagen
camino_imagen = FULLPATH(CURDIR()) + "Imagenes\"

IF EMPTY(TmpEmpleados.foto) .OR. ISNULL(TmpEmpleados.foto)
   THISFORM.imgfoto.visible = .F.
ELSE   
   lcvariable = " "
   lcVariable = STRCONV(foto,14)
   STRTOFILE(lcVariable,camino_imagen+"archivo.jpg")
   RELEASE lcVariable
   Thisform.Imgfoto.Picture = camino_imagen+"archivo.jpg"
   THISFORM.imgfoto.visible = .T.
ENDIF

THISFORM.Refresh

De ante mano gracias por la Colaboración prestada

Alfonso Ramirez Diaz

unread,
Jun 8, 2013, 12:21:53 PM6/8/13
to publice...@googlegroups.com
Ese problema se produce generalmente cuando el archivo siguiente tiene el mismo nombre, foxpro no limpia la memoria de las imagenes, hay dos posibles soluciones.

1.- Usar diferentes nombres cuando recuperas el archivo.

2.- Usar la orden CLEAR RESOURCES archivo.jpg por ejemplo

Recomiendo mas la primera generando un nombre aleatorio o usando el mismo nombre de archivo guardado en la tabla si es que lo guardas.

Víctor Hugo Espínola Domínguez

unread,
Jun 8, 2013, 12:30:20 PM6/8/13
to publicesvfoxpro
Hola Getiang

Otra solución es usar la propiedad PICTUREVAL.

   lcVariable = STRCONV(foto,14)
   **********STRTOFILE(lcVariable,camino_imagen+"archivo.jpg")
   **********RELEASE lcVariable
   Thisform.Imgfoto.PictureVal = lcVariable

Saludos,
Víctor.

GETIANG

unread,
Jun 8, 2013, 5:12:37 PM6/8/13
to publice...@googlegroups.com
Buenas Tardes...!

Ya resolví el problema, aplique la opción Nº 1 

Gracias por tu colaboración y la de todos los que intervinieron en este tema

Que tengan un Feliz fin de Semana
Reply all
Reply to author
Forward
0 new messages