Re: JDBC + PostgreSQL + LargeObjects - Mailing list pgsql-jdbc

From Justin Clift
Subject Re: JDBC + PostgreSQL + LargeObjects
Date
Msg-id 3C715AB2.F5115C1F@postgresql.org
Whole thread Raw
In response to JDBC + PostgreSQL + LargeObjects  (Paulo Delgado <pdelgado@pasaportevip.com>)
Responses Re: JDBC + PostgreSQL + LargeObjects
List pgsql-jdbc
Hi Paulo,

From the browser window where you're getting the icon for "not an
image", do a "View Source" of the .html page.

The way in which web pages work, there's probably an error buried in the
source code, and the browser isn't showing it to you.

Doesn't always work, but commonly this is the case.

Hope that's helpful.

:-)

Regards and best wishes,

Justin Clift


Paulo Delgado wrote:
>
> Oh, i don't get an error message, instead, i see on the browser, the icon for a "not an image".
> I tried to wget it, and the newly downloaded file does not match the size of the original image, and i cannot open it
withan image viewer. 
> I used the same SQL sentence using the console (the terminal), and using lo_export, and the exported image is
correctlyexported. 
>
> On Mon, 18 Feb 2002 09:44:43 -0800
> Barry Lind <barry@xythos.com> wrote:
>
> > Paulo,
> >
> > If you could mention what error you are getting and what version of the
> > code you are using that would be helpful.
> >
> > --Barry
> >
> >
> > Paulo Delgado wrote:
> > > I'm writing a JSP which instead of generating HTML code, it sends an
> > > image to the browser. The image is retrieved from the database, where it
> > > is stored as a BLOB (an OID). I read the docs online, this is the URL:
> > >
> > > http://developer.postgresql.org/docs/postgres/jdbc-binary-data.html
> > >
> > > And this is the code (still not working)
> > >
> > >
> > >   <%@ page import="java.io.*" %>
> > >   <%@ page import="java.sql.*" %>
> > >   <%@ page import="org.postgresql.largeobject.*" %>
> > >
> > >   <%
> > >   response.setContentType("image/jpeg");
> > >   out.close();
> > >   ServletOutputStream sos = response.getOutputStream();
> > >   try
> > >   {
> > >     Class.forName("org.postgresql.Driver");
> > >   }
> > >   catch(ClassNotFoundException cnfex)
> > >   {
> > >     cnfex.printStackTrace();
> > >   }
> > >   try
> > >   {
> > >     Connection mycon;
> > >     mycon=
> > > DriverManager.getConnection("jdbc:postgresql://localhost:5432/database",
> > > "userid" , "password");
> > >     mycon.setAutoCommit(false);
> > >
> > >     // Get the Large Object Manager to perform operations with
> > >     LargeObjectManager lobj =
> > > ((org.postgresql.Connection)mycon).getLargeObjectAPI();
> > >
> > >    PreparedStatement ps = mycon.prepareStatement("SELECT pic FROM
> > > mytable WHERE month='"+request.getParameter("m")+"' AND
> > > year="+request.getParameter("y"));
> > >     ResultSet rs = ps.executeQuery();
> > >     if (rs != null) {
> > >       while(rs.next()) {
> > >         //open the large object for reading
> > >         int oid = rs.getInt(1);
> > >         LargeObject obj = lobj.open(oid , LargeObjectManager.READ);
> > >
> > >         //read the data
> > >         byte buf[] = new byte[obj.size()];
> > >         obj.read(buf, 0, obj.size());
> > >
> > >         //do something with the data read here
> > >         response.setContentLength(obj.size());
> > >         int i=0;
> > >         for(i=0; i<obj.size() ; i++)
> > >         {
> > >           sos.write(buf[i]);
> > >         }
> > >         // Close the object
> > >         obj.close();
> > >       }
> > >       rs.close();
> > >     }
> > >     ps.close();
> > >     mycon.close();
> > >
> > >
> > >     }
> > >     catch(SQLException sqex)
> > >     {
> > >     out.println(sqex.toString());
> > >     }
> > >     %>
> > >
> > >
> > > the table is created like this:
> > >
> > > CREATE TABLE mytable(
> > >  pic  oid,
> > >  month  int2  NOT NULL,
> > >  year  int2  NOT NULL,
> > >  PRIMARY KEY (month, year)
> > > );
> > >
> > > I've searched all over the docs, asked all over IRC, and still does not
> > > work. any ideas?
> > >
> > >
> > >
> > > ---------------------------(end of broadcast)---------------------------
> > > TIP 4: Don't 'kill -9' the postmaster
> > >
> > >
> >
> >
> >
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
> http://archives.postgresql.org

--
"My grandfather once told me that there are two kinds of people: those
who work and those who take the credit. He told me to try to be in the
first group; there was less competition there."
   - Indira Gandhi

pgsql-jdbc by date:

Previous
From: Paulo Delgado
Date:
Subject: Re: JDBC + PostgreSQL + LargeObjects
Next
From: Paulo Delgado
Date:
Subject: Re: JDBC + PostgreSQL + LargeObjects