Re: Guardar y recuperar imagenes

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

In response to

Browse pgsql-es-ayuda by date

  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?