From: | Gunnar Wolf <gwolf(at)gwolf(dot)org> |
---|---|
To: | Juan Martínez <jeugenio(at)umcervantes(dot)cl> |
Cc: | Espartano <espartano(dot)mail(at)gmail(dot)com>, jeferson alvarez <jalvarez(at)renova(dot)com(dot)pe>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Guardar y recuperar imagenes |
Date: | 2007-03-27 18:05:36 |
Message-ID: | 20070327180536.GC31309@gwolf.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Juan Martínez dijo [Fri, Mar 23, 2007 at 11:40:43AM -0400]:
> Espartano escribió:
> >On 3/23/07, jeferson alvarez <jalvarez(at)renova(dot)com(dot)pe> wrote:
> >>Hola a todos la inquietud es esta en un caso especial tengo que guardar
> >>y recuperar imagenes alguien tiene algun link por ahi donde pueda
> >>informarme y en todo casoo que tipo de dato almacena imagenes me dijeron
> >>que oid pero no estan seguro de eso gracias
> >
> >El tipo de dato es bytea y tienes que convertirlo a base64 ? eso no
> >recuerdo bien.
>
> Nop.
>
> Se debe escapar el archivo binario para guardarlo en un campo bytea.
> Luego al recuperarlo, de debe desescapar ;-)
En general, con indicar a tu lenguaje el tipo del campo donde guardará
estos datos, él mismo se encargará de escapar/desescapar los datos. En
mi caso (cito código de Perl), basta con:
$sth = $dbh->prepare('INSERT INTO file (filename, data) VALUES (?, ?)');
$sth->bind_param(1, $filename);
$sth->bind_param(2, $data, {pg_type => DBD::Pg::PG_BYTEA});
$sth->execute;
Y para recuperarlo, mucho más simple:
$sth = $dbh->prepare('SELECT filename, data FROM file WHERE id=?');
$sth->execute($id);
($filename, $data) = $sth->fetchrow_array;
No es, como ves, tan transparente como cuando haces otro tipo de
inserciones (por el uso del bind_param), pero no tienes que pasar por
escapados lentos y manuales. Todo se hace solito, en C, y libre de los
errores de las funciones escritas rápido y a la medida :)
Obviamente, no debe costarte mucho encontrar código ejemplo con
paralelos en otros lenguajes.
--
Gunnar Wolf - gwolf(at)gwolf(dot)org - (+52-55)5623-0154 / 1451-2244
PGP key 1024D/8BB527AF 2001-10-23
Fingerprint: 0C79 D2D1 2C4E 9CE4 5973 F800 D80E F35A 8BB5 27AF
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2007-03-27 18:31:31 | Re: Problema CAMPO Fecha |
Previous Message | Victor Lopez | 2007-03-27 17:39:32 | EXCEPTION ¿como se lee? |