Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/10/2007, 05:25
KAISER-77
 
Fecha de Ingreso: mayo-2007
Mensajes: 15
Antigüedad: 17 años, 10 meses
Puntos: 1
Error al recuperar un archivo de la base de datos

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