insertar im谩genes en oracle con jsp
Hola,
tengo un jsp que recibe un formulario de datos con los campos de nombre, titulo, fecha e imagen.
la imagen es un blob que necesito insertar en oracle. c贸mo lo puedo hacer??
me han dicho que convertirla en un array de bytes pero no me funciona. si alguien me dice el c贸digo completo desde la inserci贸n en oracle hasta su posterior recuperaci贸n para mostrar la imagen al usuario, le estar铆a muy agradecido.
saludos
tengo un jsp que recibe un formulario de datos con los campos de nombre, titulo, fecha e imagen.
la imagen es un blob que necesito insertar en oracle. c贸mo lo puedo hacer??
me han dicho que convertirla en un array de bytes pero no me funciona. si alguien me dice el c贸digo completo desde la inserci贸n en oracle hasta su posterior recuperaci贸n para mostrar la imagen al usuario, le estar铆a muy agradecido.
saludos
Tienes que hacerlo en dos pasos, no te puedo pasar el c贸digo pero es algo as铆...
primer paso:
" insert into prueba_upload"
+ " (id_archivo,name,archivo,fecha_ins) "
+ " values (?,?,?,sysdate)";
st.setString(1,codArchivo);
st.setString(2,nombreCorto(fi.getName()));
// Insertas un BLOB vacio.
st.setObject(3,BLOB.empty_lob());
st.executeUpdate();
segundo paso:
select archivo from prueba_upload where id_archivo = ? FOR UPDATE";
if (rs.next())
{
BLOB blob = (BLOB) rs.getBlob("archivo");
write(blob, fi);
}
....
private static void write( BLOB blob, FileItem tmpFile ) throws Exception {
OutputStream outstream =
blob.getBinaryOutputStream();
int readSize;
readSize = (int)tmpFile.getSize();
int i = 0;
int chunk = readSize;
InputStream fr = tmpFile.getInputStream();
byte [] bbuf = new byte[readSize];
int byteRead;
while ( ((byteRead = fr.read(bbuf,0,chunk) )!= -1) ) {
outstream.write(bbuf, 0, byteRead);
i += byteRead;
}
fr.close();
outstream.close();
}
Suerte!
primer paso:
" insert into prueba_upload"
+ " (id_archivo,name,archivo,fecha_ins) "
+ " values (?,?,?,sysdate)";
st.setString(1,codArchivo);
st.setString(2,nombreCorto(fi.getName()));
// Insertas un BLOB vacio.
st.setObject(3,BLOB.empty_lob());
st.executeUpdate();
segundo paso:
select archivo from prueba_upload where id_archivo = ? FOR UPDATE";
if (rs.next())
{
BLOB blob = (BLOB) rs.getBlob("archivo");
write(blob, fi);
}
....
private static void write( BLOB blob, FileItem tmpFile ) throws Exception {
OutputStream outstream =
blob.getBinaryOutputStream();
int readSize;
readSize = (int)tmpFile.getSize();
int i = 0;
int chunk = readSize;
InputStream fr = tmpFile.getInputStream();
byte [] bbuf = new byte[readSize];
int byteRead;
while ( ((byteRead = fr.read(bbuf,0,chunk) )!= -1) ) {
outstream.write(bbuf, 0, byteRead);
i += byteRead;
}
fr.close();
outstream.close();
}
Suerte!