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* >