/ / ¿Cómo obtener el nombre del archivo blob? - java, oracle, plsql

¿Cómo obtener el nombre del archivo blob? - java, oráculo, plsql

Tengo un procedimiento pl / sql que devuelve Blob. Así es como lo llamo:

CallableStatement cstmt = null;
Blob blob = null;
cstmt = con.prepareCall("{? = call billing.PREQUEST.GetAttachment(?)}");
cstmt.registerOutParameter(1,
OracleTypes.BLOB);
cstmt.setInt(2, id);
cstmt.execute();
blob = cstmt.getBlob(1);

Ahora quiero obtener un nombre de archivo de blob. ¿Cómo puedo hacer eso?

Respuestas

1 para la respuesta № 1

UN BLOB La columna no almacena un nombre de archivo. Necesita agregar una columna separada de tipo VARCHAR2 para almacenar el nombre del archivo original.

Si está tratando con una base de datos existente que ya contiene una gran cantidad de datos, entonces no tiene suerte. El nombre del archivo no se almacenó y no hay manera de restaurarlo.


0 para la respuesta № 2

Necesitarías cambiar la Blob en un File. Prueba este código:

Blob blob = cstmt.getBlob(column);
InputStream in = blob.getBinaryStream();
OutputStream out = new FileOutputStream("OutputFile");
byte[] buff = new byte[4096];
int length = 0;

while ((length = in.read(buff)) != -1) {
out.write(buff, 0, length );
}

// From here, read in the File and just call "getName()"
// Also, make sure to call to close out and in