Re: Manera correcta de grabar una imagen

From: "Hector R(dot) De los Santos " <zahory(at)gmail(dot)com>
To: Lista Postgres ES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Manera correcta de grabar una imagen
Date: 2015-11-20 13:57:36
Message-ID: CALX2jtCTsbw3zjrmxvsmhLckPfAnNzNoTKo4Z4g-5tVj8FK7Tw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Hugo Germigniani - ProfInd 2015-11-20 14:03:11 RE: Manera correcta de grabar una imagen
Previous Message Hugo Germigniani - ProfInd 2015-11-20 11:15:18 RE: Manera correcta de grabar una imagen