RE: Manera correcta de grabar una imagen

From: Edwin De La Cruz <edwinspire(at)gmail(dot)com>
To: Hugo Germigniani - ProfInd <hugo(at)profind(dot)com(dot)ar>
Cc: "Hector R(dot) De los Santos" <zahory(at)gmail(dot)com>, Lista Postgres ES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Manera correcta de grabar una imagen
Date: 2015-11-20 14:10:52
Message-ID: CAKaZx-pXz9waomxiGDBHK4zVcqY=_tOLN4C=2pJJMOezKb+epA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El 20/11/2015 09:03, "Hugo Germigniani - ProfInd" <hugo(at)profind(dot)com(dot)ar>
escribió:
>
> Si, perdon… me olvide de enviar el link.
>
>
>
> Mil disculpas.-
>
>
>
>
>
> De: pgsql-es-ayuda-owner(at)postgresql(dot)org [mailto:
pgsql-es-ayuda-owner(at)postgresql(dot)org] En nombre de Hector R. De los Santos
> Enviado el: viernes, 20 de noviembre de 2015 10:58
> Para: Lista Postgres ES
>
> Asunto: Re: [pgsql-es-ayuda] Manera correcta de grabar una imagen
>
>
>
> 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<
hugo(at)profind(dot)com(dot)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-owner(at)postgresql(dot)org [mailto:
pgsql-es-ayuda-owner(at)postgresql(dot)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 <mcanchas(at)hotmail(dot)com>:
>
> Excelente gracias por tu apoyo..
>
>
>
> Lo trabajo con VFP 9.0
>
>
>
>
>
> MK
>
>
>
> De: pgsql-es-ayuda-owner(at)postgresql(dot)org [mailto:
pgsql-es-ayuda-owner(at)postgresql(dot)org] En nombre de Dorian Machado
> Enviado el: miércoles, 18 de noviembre de 2015 02:42 p.m.
> Para: Guillermo E. Villanueva <guillermovil(at)gmail(dot)com>
> CC: MKHotmail <mcanchas(at)hotmail(dot)com>; Lista Postgres ES <
pgsql-es-ayuda(at)postgresql(dot)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 <guillermovil(at)gmail(dot)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 <mcanchas(at)hotmail(dot)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-owner(at)postgresql(dot)org [mailto:
pgsql-es-ayuda-owner(at)postgresql(dot)org] En nombre de Cesar Erices
>>> Enviado el: lunes, 16 de noviembre de 2015 10:56 a.m.
>>> Para: MKHotmail <mcanchas(at)hotmail(dot)com>
>>> CC: Lista Postgres ES <pgsql-es-ayuda(at)postgresql(dot)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 <mcanchas(at)hotmail(dot)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
>
>

Una cosa a tomar en cuenta también es q laa imágenes guardadas en base64
crecen en un 33% más o menos.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Hellmuth Vargas 2015-11-20 14:45:35 PITR Point in Time Recovery en linea administrado
Previous Message Hugo Germigniani - ProfInd 2015-11-20 14:03:11 RE: Manera correcta de grabar una imagen