MKHotmail,
Como bien te recomienda Dorian, lo mejor es usar campos de tipo bytea para
almacenar imagenes (o cualquier otro tipo de documentos).
Para la codificacion y de-codificacion puedes usar las mismas de PostgreSQL.

http://base64decode.net/postgresql-decode
http://base64encode.net/postgresql-encode

Hugo,
Esa no es la clase de Victor Espina?, creo que debiste dar los credito.
Aqui en link
http://www.victorespina.com.ve/wiki/index.php?title=Parser_Base64_para_VFP_usando_CryptoAPI

Saludos,


:: HDS Consultores TI
Servidores | Redes | Programacion | GNU/Linux | PostgreSQL
Web: http://hdsconsultores.net
Blog: http://codigohds.com
Linux User #:320363

El 20 de noviembre de 2015, 7:15 a. m., Hugo Germigniani - ProfInd<
h...@profind.com.ar> escribió:

> Aca va una clase usando CryptoAPI
>
>
>
> DEFINE CLASS base64Helper AS Custom
>
> *
>
>  *-- Constructor
>
> PROCEDURE Init
>
>   *
>
>   DECLARE INTEGER CryptBinaryToString IN Crypt32;
>
>         STRING @pbBinary, LONG cbBinary, LONG dwFlags,;
>
>         STRING @pszString, LONG @pcchString
>
>
>
>   DECLARE INTEGER CryptStringToBinary IN crypt32;
>
>         STRING @pszString, LONG cchString, LONG dwFlags,;
>
>         STRING @pbBinary, LONG @pcbBinary,;
>
>         LONG pdwSkip, LONG pdwFlags
>
>   *
>
>  ENDPROC
>
>
>
>
>
> * encodeString
>
> * Toma un string y lo convierte en base64
>
> *
>
> PROCEDURE encodeString(pcString)
>
>   LOCAL nFlags, nBufsize, cDst
>
>   nFlags=1  && base64
>
>   nBufsize=0
>
>   CryptBinaryToString(@pcString, LEN(pcString),m.nFlags, NULL, @nBufsize)
>
>   cDst = REPLICATE(CHR(0), m.nBufsize)
>
>   IF CryptBinaryToString(@pcString, LEN(pcString), m.nFlags,@cDst,
> @nBufsize) = 0
>
>    RETURN ""
>
>   ENDIF
>
>   RETURN cDst
>
> ENDPROC
>
>
>
>  * decodeString
>
> * Toma una cadena en BAse64 y devuelve la cadena original
>
> *
>
> FUNCTION decodeString(pcB64)
>
>   LOCAL nFlags, nBufsize, cDst
>
>   nFlags=1  && base64
>
>   nBufsize=0
>
>   CryptStringToBinary(@pcB64, LEN(m.pcB64),nFlags, NULL, @nBufsize, 0,0)
>
>   cDst = REPLICATE(CHR(0), m.nBufsize)
>
>   IF CryptStringToBinary(@pcB64, LEN(m.pcB64),nFlags, @cDst, @nBufsize,
> 0,0) = 0
>
>    RETURN ""
>
>   ENDIF
>
>   RETURN m.cDst
>
> ENDPROC
>
>
>
>
>
>  * encodeFile
>
> * Toma un archivo y lo codifica en base64
>
> *
>
> PROCEDURE encodeFile(pcFile)
>
>   IF NOT FILE(pcFile)
>
>    RETURN ""
>
>   ENDIF
>
>   RETURN THIS.encodeString(FILETOSTR(pcFile))
>
> ENDPROC
>
>
>
>
>
>  * decodeFile
>
> * Toma una cadena base64, la decodifica y crea un archivo con el contenido
>
> *
>
> PROCEDURE decodeFile(pcB64, pcFile)
>
>   LOCAL cBuff
>
>   cBuff = THIS.decodeString(pcB64)
>
>   STRTOFILE(cBuff, pcFile)
>
> ENDPROC
>
> *
>
> ENDDEFINE
>
>
>
> Formas de usarla:
>
>
>
> cBase64 = base64Helper.encodeString("ESTO ES UNA PRUEBA")
>
> ?cBase64 --> "RVNUTyBFUyBVTkEgUFJVRUJB"
>
>
>
> cCadena = base64Helper.decodeString("RVNUTyBFUyBVTkEgUFJVRUJB")
>
> ?cCadena --> "ESTO ES UNA PRUEBA"
>
>
>
> cBase64 = base64Helper.encodeFile("c:\documentos\propuesta.doc")
>
> base64Helper.decodeFile(cBase64, "c:\temp\propuesta.doc")
>
>
>
>
>
>
>
>
>
> *De:* pgsql-es-ayuda-ow...@postgresql.org [mailto:
> pgsql-es-ayuda-ow...@postgresql.org] *En nombre de *Dorian Machado
> *Enviado el:* viernes, 20 de noviembre de 2015 7:45
> *Para:* MKHotmail
> *CC:* Guillermo E. Villanueva; Lista Postgres ES
>
> *Asunto:* Re: [pgsql-es-ayuda] Manera correcta de grabar una imagen
>
>
>
> Hola MKHotmail
>
>
>
> No manejo Visual Fox Pro, pero por aca encontre un link interesante que
> espero te pueda ayudar.
>
>
>
> http://www.example-code.com/foxpro/base64-encode-decode.asp
>
>
>
> 2015-11-19 19:11 GMT-03:00 MKHotmail <mcanc...@hotmail.com>:
>
> Excelente gracias por tu apoyo..
>
>
>
> Lo trabajo con VFP 9.0
>
>
>
>
>
> MK
>
>
>
> *De:* pgsql-es-ayuda-ow...@postgresql.org [mailto:
> pgsql-es-ayuda-ow...@postgresql.org] *En nombre de *Dorian Machado
> *Enviado el:* miércoles, 18 de noviembre de 2015 02:42 p.m.
> *Para:* Guillermo E. Villanueva <guillermo...@gmail.com>
> *CC:* MKHotmail <mcanc...@hotmail.com>; Lista Postgres ES <
> pgsql-es-ayuda@postgresql.org>
>
>
> *Asunto:* Re: [pgsql-es-ayuda] Manera correcta de grabar una imagen
>
>
>
> Hola MKHotmail
>
>
>
> tabajar con tipos de datos bytea es una de las practicas mas comunes, pero
> me ha dado uno que otro problema de vez en cuando, pero no deja de ser una
> buena practica.
>
>
>
> Lo que te recomendaria que harias y te puedo garanzarizar que funciona es
> lo siguiente:
>
>
>
> 1-) El campo imagen de la tabla donde piensas almacenarlas crealo de tipo
> TEXT
>
> 2-) Ahora en el codigo de tu aplicacion (no importa el lenguaje de
> programacion) en la seccion donde le haces input a la imagen ya sea desde
> un formulario o no se como manejas el app que estes trando; cuando recibas
> la imagen codificala base 64 y guardala en ese campo tipo TEXT que te dije
> que crearas
>
> 3-) Todo bien hasta el momento, pero te preguntaras: Ok ya codifique la
> imagen y la guarde en el campo TEXT, ahora como la muestro en mi web ?
>
>
>
> pues es bastante facil, lo haces de la siguiente maneta como muestrra este
> segmento de codigo, donde  el texto largo denotado en color naranja es el
> contenido de tu campo TEXT que recojistes con un SELECT
>
>
>
> <img alt="Embedded Image" 
> src="data:image/png;base64,*iVBORw0KGgoAAAANSUhEUgAAADIA...*" />
>
> Y listo eso es todo tienes todas tus imagenes centralizadas en una BD y
> guardades de manera sencilla.
>
>
>
> Esto me fue de mucha ayuda en un proyecto que participe como DBA el cual
> era un App de comercializacion de Cafe, donde teniamos varios web servers
> para balanceo de carga compartiendo directorios de imagenes de productos
> via NFS y resultava muy tedioso cuando el servidor que hacia las veces de
> NSFS maestro caia, ya que, dejaba huerfanos a los otros servers, es decir
> sin imagenes.
>
>
>
> Aplicando esto, ahora las imagenes se encontraban centralizadas en la BD y
> no importa si algun web servers de balanceo se caia.
>
>
>
> Espero te sea util esta informacion
>
>
> Saludos al grupo de ayuda de PostgreSQL
>
>
>
> 2015-11-18 13:21 GMT-02:00 Guillermo E. Villanueva <guillermo...@gmail.com
> >:
>
> Hola MK, si ya leíste las discusiones anteriores (que son muchas) creo que
> deberías hacer unas pruebas y sacar tus propias conclusiones.
>
>
>
> El 17 de noviembre de 2015, 13:00, MKHotmail <mcanc...@hotmail.com>
> escribió:
>
> Se ha discutido y no vi un buen final o un tuto de como debería ser… yo
> trabajo con Visual Fox 9.0… hay algunos ejemplos y nada claros…
>
>
>
> MK
>
>
>
> *De:* pgsql-es-ayuda-ow...@postgresql.org [mailto:
> pgsql-es-ayuda-ow...@postgresql.org] *En nombre de *Cesar Erices
> *Enviado el:* lunes, 16 de noviembre de 2015 10:56 a.m.
> *Para:* MKHotmail <mcanc...@hotmail.com>
> *CC:* Lista Postgres ES <pgsql-es-ayuda@postgresql.org>
> *Asunto:* Re: [pgsql-es-ayuda] Manera correcta de grabar una imagen
>
>
>
> Este es un tema que se ha discutido mucho en esta lista, puedes ver el
> hitorial filtrando por
>
>    - [pgsql-es-ayuda] ayuda imágenes
>    - [pgsql-es-ayuda] Almacenar imagen ebn bytea con problemas en 9.2
>    - Problema con índice y búsqueda.
>
> Cada persona tiene diversos puntos de vista y todo dependerá que buscas:
> rapides, capacidad, busqueda, etc
>
>
>
> El 16 de noviembre de 2015, 12:51, MKHotmail <mcanc...@hotmail.com>
> escribió:
>
> Cual es la manera correcta de grabar una imageny después poder recuperarla…
>
>
>
>
>
> Gracias
>
>
>
>
>
> MK
>
>
>
>
>
>
> --
>
> Sin más que decir se despide de Usted, muy atentamente
>
> Cesar Erices Vergara
> Ingeniero en Gestión Informática
> Analista de Sistema
>
> Especialista en ISO 27001 e ITIL
>
> Cuenta Twitter: @caerices
>
>
> Santiago - Chile
>
>
>
>
>
>
>
> --
>
> *Dorian Machado*
>
>
>
>
>
> --
>
> *Dorian Machado*
>

Responder a