Buenas tardes
Cuando intento recuperar un archivo me da este error (he visto en el foro alguna respuesta pero no he encontrado solucion :S):
java.lang.IllegalStateException: getOutputStream() ya ha sido llamado para esta respuesta
org.apache.catalina.connector.Response.getWriter(R esponse.java:599)
org.apache.catalina.connector.ResponseFacade.getWr iter(ResponseFacade.java:195)...
El codigo que uso es:
boolean bFound;
String sSQL;
Class oDriver;
PreparedStatement oStmt;
ResultSet oRSet;
String sFileName = null;
InputStream oBlob = null;
int iOffset;
int iReaded;
int iPar;
//StringTokenizer oStrTok;
Connection conn=null;
Class.forName("org.postgresql.Driver");
String driver = "org.postgresql.Driver";
String connectString = "jdbc:postgresql://172.27.4.25:5432/esquema";
String usuarioBD = "user";
String passwordBD = pass";
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(connectString, usuarioBD, passwordBD);
ServletOutputStream oOut = response.getOutputStream();
byte oBuffer[] = new byte[4004];
sSQL = "SELECT nombre, longitud, fichero_contenido FROM regac.regac__archivos where nombre='" + sFileName + "' and tabla_origen='" + origen + "' and id_registro=" + codigo;
oStmt = conn.prepareStatement (sSQL);
oRSet = oStmt.executeQuery();
bFound = oRSet.next();
oRSet.first();
if (bFound) {
sFileName = oRSet.getString(1);
// Send some basic http headers to support binary d/l.
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "inline; filename=\"" + sFileName + "\"");
oBlob = oRSet.getBinaryStream(3);
iOffset = 0;
do {
iReaded = oBlob.read(oBuffer, 0, 4000);
if (iReaded>0)
oOut.write(oBuffer, 0, iReaded);
iOffset += iReaded;
} while (4000==iReaded);
oOut.flush();
oBlob.close();
oBlob = null;
} // fi (bFound)
oRSet.close();
conn.close();
conn = null;
Este mismo codigo lo he probado en otra parte de mi aplicacion y funciona pero a mi no... a ver si me pueden echar una mano.
Muchas gracias