FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Sacar imagen PNG de una tabla MySql (SOLUCIONADO)
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Sacar imagen PNG de una tabla MySql (SOLUCIONADO)
Posted: Mon Mar 13, 2017 03:31 AM
Hola Foreros:

Llevo varios días sin lograr sacar con éxito una imagen PNG que esta
en un campo MEDIUMBLOB de una tabla MySql, lo curioso es que el
mismo código para una imagen PDF sí funciona de 100.

Este código con una imagen PDF va muy bien
Code (fw): Select all Collapse
        IF oRsImg:Fields("HDR_PDF"):Value != NIL
            cFile := oApp:cPathPdfs + "\1C" + SUBSTR(TIME(),1,2) + SUBSTR(TIME(),4,2) + SUBSTR(TIME(),7,2) + ".Pdf"

            IF File(cFile)
            Ferase(cFile)
            ENDIF

            //Se graba un  archivo temporal  en disco
         oHandle := FCreate(cFile)
        FWrite(oHandle, HexToStr(oRsImg:Fields("HDR_PDF"):Value))
        FClose(oHandle)

            IF FSize(cFile) > 0
                ShellExecute(0,"Open",cFile,,,1)
            ENDIF
        ENDIF


Sin embargo, prácticamente el mismo código no va
Code (fw): Select all Collapse
            IF oRsFic:Fields("FIC_FOT"):Value != NIL
                cFile := oApp:cPathFotos + "\F" + SUBSTR(TIME(),1,2) + SUBSTR(TIME(),4,2) + SUBSTR(TIME(),7,2) + ".Png"

                IF File(cFile)
                    Ferase(cFile)
                ENDIF

                //Se graba un archivo temporal en disco
                oHandle := FCreate(cFile)
            FWrite(oHandle, HexToStr(oRsFic:Fields("FIC_FOT"):Value))
            FClose(oHandle)

                IF FSize(cFile) > 0
                    ShellExecute(0,"Open",cFile,,,1)
                ENDIF
            ENDIF


Alguien que pueda darme una idea de que puede ser la diferencia, le busco
le busco y no doy con el error, será la edad? :-)

La imagen esta bien grabada en la tabla pues la saco con NaviCat y es correcta pero
con mi código no.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Re: Sacar imagen PNG de una tabla MySql
Posted: Wed Mar 15, 2017 09:45 AM
Armando,
Aparentemente usas ADO, verdad?
lo único que sospecho podría tener alguna limitación es el obtener el valor de un campo, si este campo es muy grande. No se mucho de ADO pero arriesgo que si la imagen ocupa cierto tamaño,
Code (fw): Select all Collapse
oRsImg:Fields("HDR_PDF"):Value
podría tener alguna limitación con el tamaño y fallar si es mayor.

¿Que tamaño tiene la imagen? ¿Y el PDF? ¿Has probado con imágenes pequeñas?
Navicat probablemente no use ADO y por eso no falla.

Un saludo
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Sacar imagen PNG de una tabla MySql
Posted: Wed Mar 15, 2017 03:55 PM
Carlos:

Te agradezco infinitamente tu interés, efectivamente uso ADO
el problema no estaba en el tamaño, eso lo tengo contemplado.

El problema estaba en que para guardar la imagen, que por cierto
es más pequeña que un PDF, estaba utilizando el reemplazo
directo al campo de la tabla al estilo DBFs

Code (fw): Select all Collapse
    oRsFic:Fields("FIC_FOT"):Value := StrToHex(oFic:FOT)
    oRsFic:UpDate()


Al cambiar la forma de actualizar usando un comando de MySql

Code (fw): Select all Collapse
        cPdfFile := StrToHex(MemoRead(oFic:FOT))

        cCmdSql := "UPDATE " +;
                            "Fichas " +;
                        "SET " +;
                            "FIC_FOT = '" + cPdfFile + "'," +;
                            "FIC_EXT = '" + oFic:EXT + "' " +;
                        "WHERE " +;
                            "FIC_CUR = '" + oFic:CUR + "'"


Todo quedó bajo control.

Una vez más te agradezco tu atención y sugerencia.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 817
Joined: Sun Jun 15, 2008 07:47 PM
Re: Sacar imagen PNG de una tabla MySql (SOLUCIONADO)
Posted: Thu Mar 16, 2017 02:53 PM
Has probado cambiar esto esto?

Code (fw): Select all Collapse
        oRsFic:Fields("FIC_FOT"):Value := StrToHex(oFic:FOT)
        oRsFic:UpDate()


Cambirlo a esto?

Code (fw): Select all Collapse
        oRsFic:Fields("FIC_FOT"):Value := StrToHex(MemoRead(oFic:FOT))
        oRsFic:UpDate()
______________________________________________________________________________

Sevilla - Andalucía
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Sacar imagen PNG de una tabla MySql (SOLUCIONADO)
Posted: Thu Mar 16, 2017 04:32 PM
xManuel:

También agradezco tu interés en mi problema, he probado tu
sugerencia quedando así:

Code (fw): Select all Collapse
    oRsFic:Fields("FIC_FOT"):Value := StrToHex(MemoRead(oFic:FOT))
    oRsFic:Fields("FIC_EXT"):Value := oFic:EXT
    oRsFic:UpDate()


Pero no hay de piña, no reclama nada simplemente al sacar la imagen
no la saca.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero

Continue the discussion