Grabar imagen en tabla mysql
Posted:
Thu Jan 18, 2024 6:30 pm
by JoseAlvarez
Saludos estimados,
Necesito grabar una imagen .PNG en un campo de una tabla MySql y luego recuperarla para mostrarla.
Quien me da alguna orientación?
Re: Grabar imagen en tabla mysql
Posted:
Thu Jan 18, 2024 11:43 pm
by sysctrl2
Por alguna razón un PNG cuando lo convertimos a string queda muy grande y al guardarlo en mysql
se cae el sistema.
Pero hay una solución , en el siguiente link lo explica bien el amigo Juan Navas
viewtopic.php?f=6&t=30337&hilit=GETPAGESsaludos
Re: Grabar imagen en tabla mysql
Posted:
Fri Jan 19, 2024 1:36 am
by Marco Augusto
Yo guardo archivos de todo tipo en mysql como binarios en campos del tipo "long text"
Primero se debe configurar Mysql para que lo permita
Desde el administrador de Mysql entras en Startup variables
Debes entrar en modo localhost y ejecutar como administrador
vas a la ceja Advanced Networking
en el apartado Data / Memory Size
le cambias a Max Packed size (yo le puse 16M)
Para subir un archivo cualquiera
FUNCTION GUARDADIR(cFILE,cTIPO)
APROG :=DIRECTORY(cFILE)
PUBLIC PROGNOM:=APROG[1,1]
PUBLIC PROGTAM:=APROG[1,2]
PUBLIC PROGFEC:=APROG[1,3]
PUBLIC PROGHRS:=APROG[1,4]
*
cFileG := StrToHex(MemoRead(cFILE))
*
cCMDVAL :=""
cCmdSql := "INSERT INTO PROGRAMA(TIPO,ARCHIVO,NOMBRE,FECHA,TAMA,HORA) VALUES( "
cCMDVAL := cCMDVAL+"'"+cTIPO +"', "
cCMDVAL := cCMDVAL+"'"+cFileG +"', "
cCMDVAL := cCMDVAL+"'"+cFILE +"', "
cCMDVAL := cCMDVAL+"'"+DToS(PROGFEC)+"',"
cCMDVAL := cCMDVAL+"'"+Str(PROGTAM) +"',"
cCMDVAL := cCMDVAL+"'"+PROGHRS+"' );"
IF !EJECUTA(cCmdSql+cCMDVAL)
MsgStop("ERROR AL GRABAR ARCHIVO "+cFILE ,"AVISO")
RETURN(.F.)
ENDIF
RETURN(.T.)
PARA RECUPERAR
FUNCTION EDATOS(cDAT,cNOM)
cARCH=HexToStr(cDAT)
ASALIDA:=".\"+cNOM
hFile := FCreate(asalida)
FWrite( hFile, cARCH)
FClose( hFile )
RETURN NIL
Re: Grabar imagen en tabla mysql
Posted:
Tue Jan 30, 2024 9:54 pm
by JoseAlvarez
Estimados amigos.
Saludos a todos,
Muchas gracias a quienes me sugirieron ideas a mi pregunta.
Después de verlas todas, me decanté por la opción de leandro, que me pareció la mas sencilla. Después de adaptarla a mi sistema, quedó muy bien.
Ciertamente, he leido en internet diversas opiniones y todas apuntan a que lo mejor es guardar las imágenes en carpetas de disco, bien sea en la nube o localmente.
Se dice de que guardarlas en tablas finalmente termina generando problemas, aunque no especifican que tipo de problemas.
Esperaré a ver como se comporta y el feed back del cliente,
Una vez más, muchas gracias a todos.!