Re: JDBC + PostgreSQL + LargeObjects

From: Justin Clift <justin(at)postgresql(dot)org>
To: Paulo Delgado <pdelgado(at)pasaportevip(dot)com>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: JDBC + PostgreSQL + LargeObjects
Date: 2002-02-18 19:49:06
Message-ID: 3C715AB2.F5115C1F@postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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 with an image viewer.
> I used the same SQL sentence using the console (the terminal), and using lo_export, and the exported image is correctly exported.
>
> On Mon, 18 Feb 2002 09:44:43 -0800
> Barry Lind <barry(at)xythos(dot)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

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Paulo Delgado 2002-02-18 19:59:53 Re: JDBC + PostgreSQL + LargeObjects
Previous Message Doug Fields 2002-02-18 18:52:49 Re: JDBC + PostgreSQL + LargeObjects