Foros del Web » Programación para mayores de 30 ;) » Java »

Error al recuperar un archivo de la base de datos

Estas en el tema de Error al recuperar un archivo de la base de datos en el foro de Java en Foros del Web. 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: ...
  #1 (permalink)  
Antiguo 24/10/2007, 05:25
 
Fecha de Ingreso: mayo-2007
Mensajes: 15
Antigüedad: 17 años
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
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:17.