From: | Dave Cramer <pg(at)fastcrypt(dot)com> |
---|---|
To: | "peter(dot)penzov" <peter(dot)penzov(at)gmail(dot)com> |
Cc: | List <pgsql-jdbc(at)postgresql(dot)org> |
Subject: | Re: Re: org.postgresql.util.PSQLException: ERROR: column "file" is of type oid but expression is of type bytea |
Date: | 2016-05-07 17:39:08 |
Message-ID: | CADK3HHL9JDWG10TCMQtBAmdNoRmCx7d_8zLteVf1U-eFRSV4FQ@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-jdbc |
This really isn't a JDBC question...
Dave Cramer
davec(at)postgresintl(dot)com
www.postgresintl.com
On 7 May 2016 at 13:04, peter.penzov <peter(dot)penzov(at)gmail(dot)com> wrote:
> I managed to create this:
>
> public void upload() throws SQLException, GSSException
> {
> if (file != null)
> {
> try
> {
> InputStream inputStream = file.getInputStream();
> Connection conn = ds.getConnection();
> PreparedStatement ps = null;
> boolean committed = false;
> try
> {
> conn.setAutoCommit(false);
>
> ps = conn.prepareStatement("INSERT INTO PROCEDURE_FILES
> (ID,
> PROCEDURE_ID, FILE_NAME, FILE) "
> + " VALUES (?, ?, ?, ?)");
> ps.setInt(1, obj.number);
> ps.setInt(2, obj.number);
> ps.setString(3, file.getSubmittedFileName());
>
> ps.setBlob(4, inputStream, inputStream.available());
>
> ps.executeUpdate();
> ps.close();
>
> conn.commit();
> committed = true;
> }
> catch (SQLException e)
> {
> e.printStackTrace();
> }
>
> finally
> {
> if (!committed)
> {
> conn.rollback();
> }
>
> if (ps != null)
> {
> ps.close();
> }
> conn.close();
> }
> }
> catch (IOException e)
> {
> FacesContext.getCurrentInstance().addMessage(null, new
> FacesMessage("Upload failed!"));
> }
> }
> }
>
> public void initFileDBData() throws SQLException, IOException
> {
> Connection conn = ds.getConnection();
> PreparedStatement ps = null;
>
> try
> {
> conn.setAutoCommit(false);
>
> ps = conn.prepareStatement("SELECT * FROM PROCEDURE_FILES WHERE
> ID = ?");
>
> ps.setInt(1, id);
> ResultSet rs = ps.executeQuery();
> while (rs.next())
> {
> String file_name = rs.getString("FILE_NAME");
> Blob oid = rs.getBlob("FILE");
> InputStream binaryStreasm = oid.getBinaryStream();
>
> FacesContext fc = FacesContext.getCurrentInstance();
> ExternalContext ec = fc.getExternalContext();
>
> ec.responseReset();
> ec.setResponseContentLength(binaryStreasm.available());
> ec.setResponseHeader("Content-Disposition", "attachment;
> filename=\"" + file_name + "\"");
>
> byte[] buf;
>
> buf = new byte[binaryStreasm.available()];
> int offset = 0;
> int numRead = 0;
> while ((offset < buf.length) && ((numRead =
> binaryStreasm.read(buf, offset, buf.length - offset)) >= 0))
> {
> offset += numRead;
> }
>
> HttpServletResponse response
> = (HttpServletResponse)
> FacesContext.getCurrentInstance()
> .getExternalContext().getResponse();
>
> response.setContentType("application/octet-stream");
> response.setHeader("Content-Disposition",
> "attachment;filename=" + file_name);
> response.getOutputStream().write(buf);
> response.getOutputStream().flush();
> response.getOutputStream().close();
> FacesContext.getCurrentInstance().responseComplete();
> }
> }
> finally
> {
> if (ps != null)
> {
> ps.close();
> }
> conn.close();
> }
> }
>
>
> But when I download the file it's always 0 bytes in size. Do you have any
> idea how I can fix this?
>
>
>
> --
> View this message in context:
> http://postgresql.nabble.com/org-postgresql-util-PSQLException-ERROR-column-file-is-of-type-oid-but-expression-is-of-type-bytea-tp5902345p5902501.html
> Sent from the PostgreSQL - jdbc mailing list archive at Nabble.com.
>
>
> --
> Sent via pgsql-jdbc mailing list (pgsql-jdbc(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-jdbc
>
From | Date | Subject | |
---|---|---|---|
Next Message | peter.penzov | 2016-05-07 18:46:13 | Re: org.postgresql.util.PSQLException: ERROR: column "file" is of type oid but expression is of type bytea |
Previous Message | peter.penzov | 2016-05-07 17:04:25 | Re: org.postgresql.util.PSQLException: ERROR: column "file" is of type oid but expression is of type bytea |