Re: Insertar imagen tipo bytea

From: "Linder Poclaba Lazaro" <linderlpl(at)gmail(dot)com>
To: "Marco Antonio" <marcoantoniofrias(at)gmail(dot)com>
Cc: "Alvaro Herrera" <alvherre(at)alvh(dot)no-ip(dot)org>, "postgres Emanuel CALVO FRANCO" <postgres(dot)arg(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Insertar imagen tipo bytea
Date: 2008-10-01 19:45:40
Message-ID: b8b4ef790810011245q212ea232u7126abe448bd6047@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El 1 de octubre de 2008 7:28, Marco Antonio
<marcoantoniofrias(at)gmail(dot)com>escribió:

> 2008/10/1 Linder Poclaba Lazaro <linderlpl(at)gmail(dot)com>:
> >
> > Gracias por responder a todos, aunque no lo he logrado aun... tengo mas
> > ideas y sigo buscando como hacerlo con persistencia.
> >
>
> mmm... no utilizo TopLink pero si otro framework... pero la idea es esta:
>
> CREATE TABLE documento (
> iddocumento SERIAL PRIMARY KEY,
> nombre CHARACTER VARYING(255) NOT NULL,
> nombredocumento CHARACTER VARYING(255) NOT NULL,
> documento BYTEA NOT NULL,
> contenttype TEXT NOT NULL,
> tamano INTEGER NOT NULL
> );
>
> Yo requería subir y descargar documentos así que es necesario tener un
> nombre para diferenciar entre todos, el nombre del archivo (quitando
> acentos, tildes, etc y espacios por temas de la web), el archivo en
> sí, el tipo de archivo (mime_type) y el tamaño; los últimos 2 campos
> me servían exclusivamente para descargar o mostrar el archivo.
>
> El respectivo bean tiene aparate de sus propiedades estos métodos:
>
> public void read(InputStream file) throws IOException {
> setDocumento(IOUtils.toByteArray(file));
> }
>
> public void write(OutputStream file) throws IOException {
> IOUtils.write(getDocumento(), file);
> }
>
> Con la librería commons-io leía y escribía el archivo a un array de
> bytes (byte[]). Existe otra forma de hacer mediante el objeto Channel
> para no saturar la memoria pero todavía no hice nada formal con esto.
> Desde la web obtengo el archivo mediante la librería
> commons-fileupload y luego lo almaceno en la base:
>
> Documento documento = new Documento();
> documento.setNombre(this.nombre);
> documento.setNombredocumento(IOUtil.getFilename(this.upload.getName()));
> documento.read(this.upload.getInputStream());
> documento.setContenttype(this.upload.getContentType());
> documento.setTamano(Integer.valueOf(this.upload.getSize()));
>
> xxxx.save(documento);
>
> Donde 'upload' es el objeto que contiene el archivo,
> 'IOUtil.getFilename()' método que corrige el nombre del archivo,
> 'read()' método que establece el contenido del archivo y xxx.save
> guarda en la base el objeto.

Logre resolver mi problema y efectivamente como alvaro decia no estaba
mandando la secuencia de bytes de la imagen, me parecen interesantes las
librerias que mencionas porque yo tuve que crearme una funcion que apartir
de una imagen me devuelva byte[] y luego mandar como parametro.

Revisare las librerias que dices gracias nuevamente a todos por su tiempo.

>
>
> Si necesitas más información o tienes dudas contáctame por chat o
> correo... espero haya resuelto tu pregunta o duda.
>
> Saludos y abrazos...
>
> Marco Antonio Frias Butrón
> marcofrias(at)linuxpackages(dot)net
> Slackware ~ Linux User #356229
>
> --
> Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos
> las mismas cosas.
> ~ Albert Einstein ~
>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Rodriguez Fernando 2008-10-02 10:52:03 Re: Sintaxis??: DROP TABLE IF EXISTS tablename
Previous Message postgres Emanuel CALVO FRANCO 2008-10-01 15:45:14 Re: detalles de un delete