Re: org.postgresql.util.PSQLException: ERROR: column "file" is oftype oid but expression is of type bytea - Mailing list pgsql-jdbc
From | peter.penzov |
---|---|
Subject | Re: org.postgresql.util.PSQLException: ERROR: column "file" is oftype oid but expression is of type bytea |
Date | |
Msg-id | 1462640665299-5902501.post@n5.nabble.com Whole thread Raw |
In response to | Re: Re: org.postgresql.util.PSQLException: ERROR: column "file" is of type oid but expression is of type bytea (Dave Cramer <pg@fastcrypt.com>) |
Responses |
Re: Re: org.postgresql.util.PSQLException: ERROR: column"file" is of type oid but expression is of type bytea
(Dave Cramer <pg@fastcrypt.com>)
|
List | pgsql-jdbc |
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.
pgsql-jdbc by date:
Previous
From: "David G. Johnston"Date:
Subject: Re: org.postgresql.util.PSQLException: ERROR: column "file" is of type oid but expression is of type bytea
Next
From: Dave CramerDate:
Subject: Re: Re: org.postgresql.util.PSQLException: ERROR: column"file" is of type oid but expression is of type bytea